IEEE 754 浮点特殊值 在 NumPy 中定义的特殊值可以通过:nan,inf, NaNs 可以用作简陋的占位类型(如果你并不在乎初始的值是什么的话) 注意:不能使用相等来测试 NaN。例如: >>> myarr = np.array([1., 0., np.nan, 3.]) >>> np.nonzero(myarr == np.nan) (array([], dtype=int64),) >>> np.nan == np.nan # is always…
IEEE 754 浮点特殊值 在 NumPy 中定义的特殊值可以通过:nan,inf, NaNs 可以用作简陋的占位类型(如果你并不在乎初始的值是什么的话) 注意:不能使用相等来测试 NaN。例如: >>> myarr = np.array([1., 0., np.nan, 3.]) >>> np.nonzero(myarr == np.nan) (array([], dtype=int64),) >>> np.nan == np.nan # is always…
介绍 子类化ndarray相对简单,但与其他Python对象相比,它有一些复杂性。在这个页面上,我们解释了允许你子类化ndarray的机制,以及实现子类的含义。 # ndarrays和对象创建 ndarray的子类化很复杂,因为ndarray类的新实例可以以三种不同的方式出现。这些是: 显式构造函数调用 - 如 MySubClass(params)。这是Python实例创建的常用途径。 查看转换 - 将现有的ndarray转换为给定的子类 模板中的新内容 - 从模板实例创建新实例。示例包括从子类化数组返回切片,…
NumPy 的分派机制(在numpy版本v1.16中引入)是编写与numpy API兼容并提供numpy功能的自定义实现的自定义N维数组容器的推荐方法。 应用包括 dask 数组(分布在多个节点上的N维数组) 和 cupy 数组(GPU上的N维数组)。 为了获得编写自定义数组容器的感觉,我们将从一个简单的示例开始,该示例具有相当狭窄的实用程序,但说明了所涉及的概念。 >>> import numpy as np >>> class DiagonalArray: ... def i…
介绍 结构化数组是ndarray,其数据类型是由一系列命名字段 组织的简单数据类型组成。例如: >>> x = np.array([('Rex', 9, 81.0), ('Fido', 3, 27.0)], ... dtype=[('name', 'U10'), ('age', 'i4'), ('weight', 'f4')]) >>> x array([('Rex', 9, 81.), ('Fido', 3, 27.)], dtype=[('name', 'U10'), ('a…
字节排序和ndarrays简介 ndarray是一个为内存中的数据提供python数组接口的对象。 经常发生的情况是,要用数组查看的内存与运行Python的计算机的字节顺序不同。 例如,我可能正在使用带有 little-endian CPU 的计算机 - 例如Intel Pentium,但是我已经从一个由 big-endian计算机 编写的文件中加载了一些数据。假设我已经从Sun(big-endian)计算机写入的文件中加载了4个字节。我知道这4个字节代表两个16位整数。在 big-endian 机器上,首先以最高…
另见 numpy.broadcast Numpy中的数组广播 注意 有关广播概念的说明,请参阅此文章 。 术语广播(Broadcasting)描述了 numpy 如何在算术运算期间处理具有不同形状的数组。受某些约束的影响,较小的数组在较大的数组上“广播”,以便它们具有兼容的形状。广播提供了一种矢量化数组操作的方法,以便在C而不是Python中进行循环。它可以在不制作不必要的数据副本的情况下实现这一点,通常导致高效的算法实现。然而,有些情况下广播是一个坏主意,因为它会导致内存使用效率低下,从而减慢计算速度。 NumP…
另见 索引 索引相关API 数组索引是指使用方括号([])来索引数组值。索引有很多选项,它可以为numpy索引提供强大的功能,但是功能会带来一些复杂性和混淆的可能性。本节仅概述了与索引相关的各种选项和问题。除了单个元素索引之外,大多数这些选项的详细信息都可以在相关章节中找到。 赋值与引用 以下大多数示例体现在引用数组中的数据时使用索引。分配给数组时,这些示例也可以正常运行的。有关分配的原理具体示例和说明,请参见最后一节。 单个元素索引 人们期望的是1-D数组的单元素索引。它的工作方式与其他标准Python序列完全相…
使用genfromtxt导入数据 NumPy提供了几个函数来根据表格数据创建数组。我们将重点放在genfromtxt函数上。 In a nutshell, genfromtxt runs two main loops. 第一个循环以字符串序列转换文件的每一行。第二个循环将每个字符串转换为适当的数据类型。这种机制比单一循环慢,但提供了更多的灵活性。特别的, genfromtxt考虑到缺失值的情况, 其他更简单的方法如loadtxt无法做到这点. 注意 举例时,我们将使用以下约定: >>> impor…
另见 数组创建相关API 简介 创建数组有5种常规机制: 从其他Python结构(例如,列表,元组)转换 numpy原生数组的创建(例如,arange、ones、zeros等) 从磁盘读取数组,无论是标准格式还是自定义格式 通过使用字符串或缓冲区从原始字节创建数组 使用特殊库函数(例如,random) 本节不包括复制,连接或以其他方式扩展或改变现有数组的方法。它也不会涵盖创建对象数组或结构化数组。这些都包含在他们自己的章节中。 将Python array_like对象转换为Numpy数组 通常,在Python中排列…
另见 数据类型对象 数组类型之间的转换 NumPy支持比Python更多种类的数字类型。本节显示了哪些可用,以及如何修改数组的数据类型。 支持的原始类型与 C 中的原始类型紧密相关: Numpy 的类型 C 的类型 描述 np.bool bool 存储为字节的布尔值(True或False) np.byte signed char 平台定义 np.ubyte unsigned char 平台定义 np.short short 平台定义 np.ushort unsigned short 平台定义 np.intc int…