numpy --- 兼容 numpy 的数组运算

ulabnumpy 子模块提供了一套兼容 numpy 的 API,围绕 ndarray n 维数组类型构建。它实现了 CPython numpy 中经过精选的一个子集:数组构造、逐元素数学运算、归约与统计、线性代数、FFT、随机数生成、多项式拟合以及基本的 I/O。

该子模块按惯例导入为 np:

from ulab import numpy as np

a = np.array([1, 2, 3, 4], dtype=np.float)
b = np.linspace(0, 1, num=5)
c = np.dot(a.reshape((2, 2)), a.reshape((2, 2)))

每个 dtype 参数是模块级别公开的整数常量之一:numpy.boolnumpy.uint8numpy.int8numpy.uint16numpy.int16numpy.float(默认值)。结果类型 ndarray 指的是 numpy.ndarray

子模块

class ndarray --- n 维数组

ndarraynumpy / ulab 核心的 n 维、可感知 dtype 的容器。数据存储在一块连续内存中,其解释方式由一个小型头部描述(dtypeshapestridesndimitemsize)。许多操作——reshapetranspose、切片——只调整这个头部,因此开销非常低;而分配新存储的方法(copyflatten、大多数算术运算)会返回一个新的稠密数组。

同一类型可以通过 ulab.ndarraynumpy.ndarray 以及(在本页中)直接用 ndarray 访问。

class numpy.ndarray(values: ndarray | bytes | list | tuple, *, dtype: int = numpy.float)

创建一个新的 ndarray

参数:
  • values -- 源数据。可以是另一个 ndarray(会被深拷贝,若 dtype 不同则进行类型转换),也可以是任何 MicroPython 可迭代对象。嵌套的可迭代对象会生成多维数组;内层的各可迭代对象长度必须全部相同,否则会抛出 ValueError

  • dtype -- 新数组的元素类型。numpy 公开的类型代码整数之一(numpy.boolnumpy.uint8numpy.int8numpy.uint16numpy.int16numpy.float),或 dtype 实例。默认为 numpy.float

工厂函数 numpy.array 是创建 ndarray 的惯用方式;它会转发到此构造函数。

byteswap(*, inplace: bool = False) ndarray

交换每个元素的字节序。对于 uint16int16float 数组,这将反转每个元素的字节序,在处理来自字节序与微控制器不同的外设数据时非常有用。对于单字节类型(booluint8int8),这是一个无操作,返回视图或副本。

如果 inplaceFalse(默认),则返回一个新的 ndarray,原数组保持不变。如果 inplaceTrue,则就地交换 self 的字节并返回 self 的一个视图。

copy() ndarray

返回数组的一个新的、稠密的深拷贝。该副本拥有自己的数据;对它的修改不会影响原数组。

flatten(*, order: str = 'C') ndarray

返回数组的一个新的一维副本。

参数:

order -- 'C'(默认)按 C 顺序遍历数据(最后一个轴变化最快);'F' 按 Fortran 顺序遍历(第一个轴变化最快)。

reshape(shape: int | tuple[int, ...]) ndarray

返回数组的一个具有新形状的视图。元素总数必须保持不变,否则会抛出 ValueError。仅在 ULAB_MAX_DIMS > 1 时可用。等价于对 shape 赋值。

sort(*, axis: int | None = -1) None

就地对数组进行排序。

参数:

axis -- 用于排序的轴。-1(默认)沿最后一个轴排序;None 会先将数组展平再排序。

tobytes() bytearray

返回一个别名指向数组底层数据缓冲区的 bytearray。通过返回的 bytearray 写入会就地修改数组。如果数组不是稠密的(例如切片视图),则抛出 ValueError

tolist() list

以一个(可能嵌套的)Python list 形式返回数组内容。嵌套深度等于 ndim

transpose() ndarray

返回数组的转置(轴反转)。对于一维数组,这返回 self。仅在 ULAB_MAX_DIMS > 1 时可用。T 属性是此方法的简写。

dtype: dtype | int

数组元素的数据类型。当固件在构建时启用了 ULAB_HAS_DTYPE_OBJECT 时,返回一个 dtype 实例,否则以整数形式返回底层的单字符类型码。

flat: flatiter

一个扁平迭代器,按 C 顺序产出数组的每个元素。与 flatten() 不同,迭代 flat 不会分配新数组。

itemsize: int

单个数组元素的字节大小,由 dtype 推导得出。

ndim: int

数组的维度数(shape 的长度)。

shape: tuple[int, ...]

数组沿每个轴的长度。将一个元组赋值给 shape 会就地重塑数组(等价于 reshape())。

size: int

数组中元素的总数(shape 各元素的乘积)。

strides: tuple[int, ...]

在内存中沿每个轴前进到该轴上下一个元素所需跨越的字节数。

T: ndarray

数组的转置;等价于 transpose()

支持的运算符

ndarray 实例支持以下运算符。二元运算符按照 numpy 标准广播规则对操作数进行广播,并遵循 numpy 的类型提升规则(例如 uint8 + int8 => int16uint16 + int16 => float)。

算术运算(二元): +-*///%**。同时支持反射(右侧)操作数和原地变体 +=-=*=/=%=**=ndarray-与-ndarrayndarray-与-标量两种形式均可接受。

比较: ==!=<<=>>=。每个都返回一个广播形状的布尔 ndarray

位运算(仅限整数数组): &|^。将这些操作应用于 float 数组会引发 TypeError

一元: +(返回一个副本)、-(取负;对于无符号 dtype,值按模 \(2^N\) 回绕)、abs()(逐元素绝对值;对于无符号 dtype 返回一个不经计算的副本)、~(按位取反,仅限整数 dtype)、len()(返回第一个轴的长度)。

索引与切片: a[i]a[i, j, ...]a[start:stop:step]、布尔掩码索引(a[mask])以及整数数组(花式)索引在读取和写入时都受支持。

迭代: 迭代 ndarray 会沿第一个轴产出子数组(对于一维数组,每次产出一个元素)。使用 flat 可以无论维度如何都遍历每个标量元素。

矩阵乘法运算符 @ 未实现;请改用 numpy.dotnp.dot(a, b))。

移位运算符(<<>>)未在运算符层面实现。对于逐元素整数移位,请使用 numpy.left_shiftnumpy.right_shift

数组构造

numpy.array(values: ndarray | list | tuple, *, dtype: int = float) ndarray

从嵌套的数字可迭代对象构造一个新的 ndarraynumpy.ndarray 的等价替代构造函数。

numpy.arange(start: int | float, stop: int | float | None = None, step: int | float = 1, *, dtype: int | None = None) ndarray

返回半开区间 [start, stop) 上均匀分布的值。如果只给定一个位置参数,它会被当作 stop,并取 start = 0。如果省略 dtype,则从输入推断(当 startstopstep 全为整数且在范围内时为整数类型)。

numpy.asarray(a: ndarray | list | tuple, *, dtype: int | None = None) ndarray

如果 a 已经是一个 dtype 与 dtype 匹配的 ndarray(或 dtypeNone),则原样返回 a;否则创建一个新数组(在给定时进行所请求的 dtype 转换)。可迭代对象按 numpy.array 中的方式转换。

numpy.concatenate(arrays: tuple, *, axis: int = 0) ndarray

沿现有的 axis 连接一系列 ndarray。所有输入数组在除 axis 之外的每个轴上都必须具有相同的 dtype、ndim 和形状。

numpy.diag(a: ndarray, *, k: int = 0) ndarray

对于二维的 a,返回一个包含第 k 条对角线的一维数组。对于一维的 a,返回一个二维方阵,其中 a 放置在第 k 条对角线上。k 可以为正(主对角线之上)或为负(主对角线之下)。

numpy.empty(shape: int | tuple[int, ...], *, dtype: int = float) ndarray

zeros 的别名;返回一个形状为 shape、dtype 为 dtype 的全零填充数组。(ulab 不会让缓冲区保持未初始化状态。)

numpy.eye(N: int, M: int | None = None, k: int = 0, *, dtype: int = float) ndarray

返回一个二维 N x M 数组(若 MNone 则为 N x N 方阵),第 k 条对角线上为 1,其余位置为 0。

numpy.frombuffer(buffer: bytes, *, dtype: int = float, count: int = -1, offset: int = 0) ndarray

将一个支持缓冲区协议的对象解释为 dtype 为 dtype 的一维 ndarraycount 是要读取的项数(-1 读取所有可用项);offset 会跳过缓冲区起始处的相应字节数。

numpy.full(shape: int | tuple[int, ...], fill_value: int | float | bool, *, dtype: int = float) ndarray

返回一个形状为 shape、dtype 为 dtype 的新数组,每个元素都设为 fill_value

numpy.linspace(start: float, stop: float, num: int = 50, *, endpoint: bool = True, retstep: bool = False, dtype: int = float) ndarray | tuple[ndarray, float]

在闭区间 [start, stop] 上返回 num 个均匀间隔的样本(若 endpointFalse 则为半开区间)。当 retstepTrue 时,返回元组 (samples, step)

numpy.logspace(start: float, stop: float, num: int = 50, *, base: float = 10.0, endpoint: bool = True, dtype: int = float) ndarray

返回在对数刻度上均匀分布的 num 个样本:结果以 base ** start 开始,以 base ** stop 结束。

numpy.meshgrid(*xi: ndarray, indexing: str = 'xy') tuple[ndarray, ...]

从一系列一维坐标数组返回一个坐标矩阵元组。当 indexing'xy'(默认)时,前两个输入被视为笛卡尔坐标,其输出轴会被交换;当为 'ij' 时,使用矩阵式索引。该实现对应于 NumPy 中 copy=Truesparse=False 的等价行为。

numpy.ones(shape: int | tuple[int, ...], *, dtype: int = float) ndarray

返回一个形状为 shape、dtype 为 dtype 的全 1 填充新数组。

numpy.zeros(shape: int | tuple[int, ...], *, dtype: int = float) ndarray

返回一个形状为 shape、dtype 为 dtype 的全 0 填充新数组。

检查 / 打印

numpy.get_printoptions() dict

以一个带有 thresholdedgeitems 键的字典形式返回当前的数组打印选项。

numpy.set_printoptions(*, threshold: int | None = None, edgeitems: int | None = None) None

设置数组打印选项。threshold 是完整打印的最大数组元素数;edgeitems 是当数组被概要显示时,在轴的每一端显示的项数。

numpy.ndinfo(array: ndarray) None

打印关于 array 的诊断信息(shape、strides、dtype、itemsize 等)。

numpy.size(a: ndarray, *, axis: int | None = None) int

返回 a 沿 axis 的元素数量;如果 axisNone,则返回元素总数(ndarray.shape 各元素的乘积)。

比较

numpy.clip(a: ndarray | int | float, a_min: ndarray | int | float, a_max: ndarray | int | float) ndarray | int | float

a 的值进行裁剪,使得 a_min <= result <= a_max。等价于 maximum(a_min, minimum(a, a_max));广播遵循与 minimum 相同的规则。

numpy.equal(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | bool

逐元素 x1 == x2;返回一个布尔 ndarray(若两个输入都是标量则返回一个 bool 标量)。提供此函数是为了可移植性——对数组使用 == 运算符可得到相同结果。

numpy.not_equal(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | bool

逐元素 x1 != x2equal 的布尔对应物。

numpy.isfinite(x: ndarray | int | float) ndarray | bool

返回一个布尔数组(或标量),在输入为有限值处为 True。整数输入始终是有限的。

numpy.isinf(x: ndarray | int | float) ndarray | bool

返回一个布尔数组(或标量),在输入为无穷值处为 True。整数输入永远不是无穷的。

numpy.maximum(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | int | float

两个数组/标量的逐元素最大值。参数会被一起广播;若 dtype 不同,则输出会向上转型。

numpy.minimum(x1: ndarray | int | float, x2: ndarray | int | float) ndarray | int | float

两个数组/标量的逐元素最小值;maximum 的对应物。

numpy.nonzero(a: ndarray) tuple[ndarray, ...]

返回一个 ndarray 元组,a 的每个维度对应一个,包含 a 中非零元素的索引。

numpy.where(condition: ndarray | int | float, x: ndarray | int | float, y: ndarray | int | float) ndarray

返回一个 ndarray,其元素在 condition 为真处取自 x,否则取自 y。三个输入会被一起广播;输出 dtype 是 xy 的向上转型结果。

数值归约

numpy.all(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | bool

测试沿 axis 的所有元素是否都求值为 True。当 axis=None(默认)时,对展平后的数组进行测试并返回单个 bool

numpy.any(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | bool

测试沿 axis 是否有任何元素求值为 True。当 axis=None 时,对展平后的数组进行测试。

numpy.argmax(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | int

返回沿 axis 的最大元素的索引。当 axis=None 时,数组会被展平并返回单个整数。

numpy.argmin(a: ndarray | list | tuple, *, axis: int | None = None) ndarray | int

返回沿 axis 的最小元素的索引。当 axis=None 时,数组会被展平并返回单个整数。

numpy.argsort(a: ndarray, *, axis: int = -1) ndarray

返回一个无符号整数索引 ndarray,其各项可沿 axisa 按升序排序。输出 dtype 为 uint16,因此任何轴都不得超过 65535 个元素。不支持 axis=None

numpy.cross(a: ndarray, b: ndarray) ndarray

返回两个长度为 3 的一维数组的叉积。

numpy.diff(a: ndarray, *, n: int = 1, axis: int = -1) ndarray

返回 a 沿 axis 的第 n 阶离散前向差分。n 必须在 0..9 范围内(差分模板存储在一个 int8 中);axis 的长度会缩短 n。numpy 的 prependappend 关键字未实现。

numpy.flip(a: ndarray, *, axis: int | None = None) ndarray

返回一个新数组,其元素顺序沿 axis 反转;当 axis=None 时,数组沿每个轴反转。

numpy.max(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float

返回沿 axis 的最大元素。当 axis=None(默认)时,展平后的数组被归约为一个标量。numpy 的 out 关键字未实现。

numpy.min(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float

返回沿 axis 的最小元素;max 的对应物。

numpy.mean(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | float

返回沿 axis 的算术平均值。当 axis=None(默认)时,以 float 形式返回展平后数组的平均值。

numpy.median(a: ndarray, *, axis: int | None = None) ndarray | float

返回沿 axis 的中位数。当 axis=None 时,数组会先被展平。输出 dtype 始终为浮点型。

numpy.roll(a: ndarray, shift: int, *, axis: int | None = None) ndarray

返回 a,其元素被滚动(循环移位)shift 个位置。当 axis=None(默认)时,数组会先被展平。负的移位量会沿相反方向滚动。

numpy.sort(a: ndarray, *, axis: int = -1) ndarray

使用堆排序返回 a 沿 axis 的已排序副本。当 axis=None 时,数组会先被展平。numpy 的 kindorder 关键字未实现。

numpy.std(a: ndarray | list | tuple, *, axis: int | None = None, ddof: int = 0, keepdims: bool = False) ndarray | float

返回沿 axis 的标准差。ddof 是 delta 自由度——所用的除数为 N - ddof

numpy.sum(a: ndarray | list | tuple, *, axis: int | None = None, keepdims: bool = False) ndarray | int | float

返回沿 axis 的总和。当 axis=None 时,以标量形式返回展平后数组的总和。

统计

numpy.bincount(x: ndarray, *, weights: ndarray | None = None, minlength: int | None = None) ndarray

统计一维非负整数数组 x 中每个值出现的次数。x 的 dtype 必须为 uint8uint16。如果给定了 weights,则 x 的每一项贡献其对应的权重而非 1,且输出的 dtype 为 float;否则输出的 dtype 为 uint16。如果给定了 minlength,则输出数组至少有那么多元素(多余的项为零)。

numpy.trace(m: ndarray) int | float

返回方阵 m 对角线元素的总和。返回类型遵循 m 的 dtype(整数数组产生整数,浮点数组产生浮点数)。

变换

numpy.compress(condition: ndarray | list | tuple, a: ndarray, *, axis: int | None = None) ndarray

返回 a 中由布尔 condition 沿 axis 选出的切片。当 axis=None 时,使用展平后的数组。

numpy.delete(a: ndarray, indices: int | ndarray | list | tuple | range, *, axis: int | None = None) ndarray

返回 a 的一个副本,其中 axis 上位于 indices 处的项已被删除。当 axis=None 时,数组会先被展平。负索引从 axis 的末尾开始计数;indices 在删除前会被内部排序。

numpy.dot(m1: ndarray, m2: ndarray) ndarray | float

返回两个数组的点积。对于两个一维数组,这是内积(一个 float 标量)。对于二维数组,这是矩阵乘法;内部维度必须匹配。结果的 dtype 始终为 float

近似

numpy.interp(x: ndarray, xp: ndarray, fp: ndarray, *, left: float | None = None, right: float | None = None) ndarray

一维线性插值。xp 必须是一个单调递增的一维自变量值数组;fp 包含对应的因变量值;x 是求取插值的点。leftright 分别覆盖 x < xp[0]x > xp[-1] 时返回的值(默认值:fp[0]fp[-1])。

numpy.trapz(y: ndarray, x: ndarray | None = None, dx: float = 1.0) float

使用复合梯形法则对 y 进行积分。如果给定了 x,它提供与 y 对应的采样位置;否则使用间距 dxy(和 x)必须是一维的。

选择

numpy.take(a: ndarray, indices: ndarray | list | tuple, *, axis: int | None = None, out: ndarray | None = None, mode: str | None = None) ndarray

沿 axisa 中按给定 indices 取元素。当 axis=None 时,使用展平后的数组。mode 选择越界行为:"raise"(默认——抛出 ValueError)、"wrap"(对轴长取模)或 "clip"(裁剪到有效范围;不允许负索引)。如果给定了 out,结果会写入其中。

位运算

numpy.bitwise_and(x1: ndarray, x2: ndarray) ndarray

两个整数数组的逐元素按位与;支持广播。非整数 dtype 会引发异常。

numpy.bitwise_or(x1: ndarray, x2: ndarray) ndarray

两个整数数组的逐元素按位或。

numpy.bitwise_xor(x1: ndarray, x2: ndarray) ndarray

两个整数数组的逐元素按位异或。

numpy.left_shift(x1: ndarray, x2: ndarray) ndarray

x1 逐元素按位左移 x2 位;两个数组都必须为整数 dtype。

numpy.right_shift(x1: ndarray, x2: ndarray) ndarray

x1 逐元素按位右移 x2 位;两个数组都必须为整数 dtype。

滤波

numpy.convolve(a: ndarray, v: ndarray) ndarray

返回两个一维数组的离散线性卷积。仅支持 "full" 模式;numpy 的 mode 关键字不被接受(其他模式可通过对完整结果切片获得)。输出长度为 len(a) + len(v) - 1

多项式

numpy.polyfit(x: ndarray | list | tuple, y: ndarray | list | tuple, deg: int) ndarray
numpy.polyfit(y: ndarray | list | tuple, deg: int) ndarray

通过最小二乘法对数据点 (x, y) 拟合一个次数为 deg 的多项式,并返回多项式系数(最高次在前)。如果省略 x,则使用 range(len(y))。如果 xy 的长度不同,则抛出 ValueError

numpy.polyval(p: ndarray | list | tuple, x: ndarray | list | tuple | int | float) ndarray | float

x 处对系数为 p(最高次在前)的多项式求值。如果 x 是标量,则返回一个 float,否则返回一个 ndarray

I/O

numpy.load(file: str) ndarray

file 读取之前用 save 写入的数组(numpy 的平台无关 .npy 格式)。如果文件的字节序与主机不同,则会即时转换字节序。

numpy.loadtxt(file: str, *, delimiter: str | None = None, comments: str = '#', max_rows: int = -1, usecols: int | ndarray | list | tuple | None = None, dtype: int = float, skiprows: int = 0) ndarray

从文本 file 读取数值数据并以 ndarray 形式返回。delimiter 默认为空白字符;comments 是行注释标记;max_rows 限制读取的数据行数(-1 表示全部);usecols 按索引选择列;skiprows 跳过相应数量的起始行。如果 dtype 不是浮点型,则通过取整转换值。

numpy.save(file: str, a: ndarray) None

以 numpy 的平台无关 .npy 格式将 a 保存到 file

numpy.savetxt(file: str, a: ndarray, *, delimiter: str = ' ', header: str | None = None, footer: str | None = None, comments: str = '# ') None

以文本形式将 a 写入 filedelimiter 分隔一行内的各个值;如果提供了 headerfooter,则在数据之前/之后写入它们,每行都以 comments 作为前缀。值以浮点形式写入。

通用函数

逐元素数学函数。每个都接受一个标量或一个 ndarray,并返回一个形状匹配的结果(标量输入返回浮点标量,数组输入返回 ndarray)。当以 ndarray 调用时,结果是一个新的浮点 ndarray;可以传入一个可选的 out 关键字,将结果写入一个预分配的、相同大小的浮点 ndarray

numpy.acos(x: ndarray | float, /) ndarray | float

计算 x 每个元素的反余弦(arc cosine);结果以弧度表示。

numpy.acosh(x: ndarray | float, /) ndarray | float

计算 x 每个元素的反双曲余弦。

numpy.arctan2(y: ndarray | float, x: ndarray | float, /) ndarray | float

逐元素计算双参数反正切 atan2(y, x);支持两个输入之间的广播。

numpy.around(x: ndarray, /, decimals: int = 0) ndarray

ndarray x 的元素舍入到给定的小数位数 decimals;第一个参数必须是一个 ndarray

numpy.asin(x: ndarray | float, /) ndarray | float

计算 x 每个元素的反正弦(arc sine);结果以弧度表示。

numpy.asinh(x: ndarray | float, /) ndarray | float

计算 x 每个元素的反双曲正弦。

numpy.atan(x: ndarray | float, /) ndarray | float

计算 x 每个元素的反正切(arc tangent);结果以弧度表示。

numpy.atanh(x: ndarray | float, /) ndarray | float

计算 x 每个元素的反双曲正切。

numpy.ceil(x: ndarray | float, /) ndarray | float

计算 x 每个元素的向上取整(不小于该值的最小整数)。

numpy.cos(x: ndarray | float, /) ndarray | float

计算 x 每个元素的余弦(以弧度为单位)。

numpy.cosh(x: ndarray | float, /) ndarray | float

计算 x 每个元素的双曲余弦。

numpy.degrees(x: ndarray | float, /) ndarray | float

x 的每个元素从弧度转换为角度。

numpy.exp(x: ndarray | float, /) ndarray | float

计算 x 中每个元素的指数 e**x

numpy.expm1(x: ndarray | float, /) ndarray | float

以接近零时改进的精度计算 x 每个元素的 exp(x) - 1

numpy.floor(x: ndarray | float, /) ndarray | float

计算 x 每个元素的向下取整(不大于该值的最大整数)。

numpy.log(x: ndarray | float, /) ndarray | float

计算 x 每个元素的自然对数。

numpy.log10(x: ndarray | float, /) ndarray | float

计算 x 每个元素的以 10 为底的对数。

numpy.log2(x: ndarray | float, /) ndarray | float

计算 x 每个元素的以 2 为底的对数。

numpy.radians(x: ndarray | float, /) ndarray | float

x 的每个元素从角度转换为弧度。

numpy.sin(x: ndarray | float, /) ndarray | float

计算 x 每个元素的正弦(以弧度为单位)。

numpy.sinc(x: ndarray | float, /) ndarray | float

计算 x 每个元素的归一化 sinc 函数 sin(pi*x) / (pi*x)

numpy.sinh(x: ndarray | float, /) ndarray | float

计算 x 每个元素的双曲正弦。

numpy.sqrt(x: ndarray | float, /, *, dtype: int = float) ndarray | float

计算 x 中每个元素的平方根。

numpy.tan(x: ndarray | float, /) ndarray | float

计算 x 每个元素的正切(以弧度为单位)。

numpy.tanh(x: ndarray | float, /) ndarray | float

计算 x 每个元素的双曲正切。

numpy.vectorize(f: Callable[[float], float], /, *, otypes: int | None = None) Callable

返回一个可调用对象,它将 Python 函数 f 逐元素应用于标量、可迭代对象或 ndarrayotypes 选择输出 dtype(默认浮点型)。

常量

numpy.e: float

欧拉数 \(e \approx 2.71828\)

numpy.pi: float

\(\pi \approx 3.14159\)

numpy.inf: float

IEEE-754 浮点正无穷。

numpy.nan: float

IEEE-754 浮点"非数字"。

numpy.bool: int

布尔数组的 Dtype 码(以 uint8 存储)。

numpy.uint8: int

无符号 8 位整数数组的 Dtype 码。

numpy.int8: int

有符号 8 位整数数组的 Dtype 码。

numpy.uint16: int

无符号 16 位整数数组的 Dtype 码。

numpy.int16: int

有符号 16 位整数数组的 Dtype 码。

numpy.float: int

32 位浮点数组的 Dtype 码。