数据类型API

标准数组可以有24种不同的数据类型(并支持添加您自己的类型)。这些数据类型都具有枚举类型、枚举类型字符和相应的数组标量python类型对象(放置在层次结构中)。还有标准的C typedef,以便更容易地操作给定数据类型的元素。对于数字类型,还有位宽度等效的C typedef和命名的typenumber,使选择所需的精度更加容易。

警告

C代码中类型的名称更接近于C命名约定。这些类型的python名称遵循python约定。因此, NPY_FLOAT 在C中获取32位浮点,但是 numpy.float_ 在python中对应于64位的double。为了清晰起见,可以在python和c中使用位宽度名称。

枚举类型

enumerator NPY_TYPES

这里有一个枚举类型列表,提供了基本的24个数据类型和一些有用的通用名称。每当代码需要类型号时,都会请求这些枚举类型之一。所有类型都被调用 NPY_{{NAME}}

enumerator NPY_BOOL

布尔类型的枚举值,存储为一个字节。它只能设置为值0和1。

enumerator NPY_BYTE
enumerator NPY_INT8

8位/1字节有符号整数的枚举值。

enumerator NPY_SHORT
enumerator NPY_INT16

16位/2字节有符号整数的枚举值。

enumerator NPY_INT
enumerator NPY_INT32

32位/4字节有符号整数的枚举值。

enumerator NPY_LONG

相当于npy-int或npy-longlong,取决于平台。

enumerator NPY_LONGLONG
enumerator NPY_INT64

64位/8字节有符号整数的枚举值。

enumerator NPY_UBYTE
enumerator NPY_UINT8

8位/1字节无符号整数的枚举值。

enumerator NPY_USHORT
enumerator NPY_UINT16

16位/2字节无符号整数的枚举值。

enumerator NPY_UINT
enumerator NPY_UINT32

32位/4字节无符号整数的枚举值。

enumerator NPY_ULONG

相当于npy-uint或npy-oulonglong,取决于平台。

enumerator NPY_ULONGLONG
enumerator NPY_UINT64

64位/8字节无符号整数的枚举值。

enumerator NPY_HALF
enumerator NPY_FLOAT16

16位/2字节IEEE 754-2008兼容浮点类型的枚举值。

enumerator NPY_FLOAT
enumerator NPY_FLOAT32

32位/4字节IEEE 754兼容浮点类型的枚举值。

enumerator NPY_DOUBLE
enumerator NPY_FLOAT64

64位/8字节IEEE 754兼容浮点类型的枚举值。

enumerator NPY_LONGDOUBLE

特定于平台的浮点类型的枚举值,该值至少与npy_double一样大,但在许多平台上更大。

enumerator NPY_CFLOAT
enumerator NPY_COMPLEX64

由两个npy_浮点值组成的64位/8字节复杂类型的枚举值。

enumerator NPY_CDOUBLE
enumerator NPY_COMPLEX128

由两个npy_双精度值组成的128位/16字节复杂类型的枚举值。

enumerator NPY_CLONGDOUBLE

平台特定的复杂浮点类型的枚举值,由两个npy longdouble值组成。

enumerator NPY_DATETIME

数据类型的枚举值,它以基于可选日期或时间单位的精度保存日期或日期时间。

enumerator NPY_TIMEDELTA

数据类型的枚举值,它以可选择日期或时间单位的整数形式保存时间长度。

enumerator NPY_STRING

可选大小的ASCII字符串的枚举值。字符串在给定数组中的最大大小是固定的。

enumerator NPY_UNICODE

可选大小的UCS4字符串的枚举值。字符串在给定数组中的最大大小是固定的。

enumerator NPY_OBJECT

对任意python对象的引用的枚举值。

enumerator NPY_VOID

主要用于保存结构数据类型,但可以包含任意二进制数据。

上述类型的一些有用别名是

enumerator NPY_INTP

与(void)大小相同的带符号整数类型的枚举值 * 指针。这是所有索引数组使用的类型。

enumerator NPY_UINTP

与(void)大小相同的无符号整数类型的枚举值 * 指针。

enumerator NPY_MASK

用于掩码的类型的枚举值,例如 NPY_ITER_ARRAYMASK 迭代器标志。这相当于 NPY_UINT8 .

enumerator NPY_DEFAULT_TYPE

当没有显式指定数据类型时使用的默认类型,例如在调用np.zero(shape)时。这相当于 NPY_DOUBLE .

其他有用的相关常量包括

NPY_NTYPES

内置numpy类型的总数。枚举范围从0到npy类型s-1。

NPY_NOTYPE

保证信号值不是有效的类型枚举数。

NPY_USERDEF

用于自定义数据类型的类型编号的开头。

指示某些类型的各种字符代码也是枚举列表的一部分。对类型字符的引用(如果需要的话)应该始终使用这些枚举。它们的形式是 NPY_{{NAME}}LTR 在哪里? {{NAME}} 可以是

BOOLBYTEUBYTESHORTUSHORTINTUINTLONGULONGLONGLONGULONGLONGHALFFLOATDOUBLELONGDOUBLECFLOATCDOUBLECLONGDOUBLEDATETIMETIMEDELTAOBJECTSTRINGVOID

INTPUINTP

GENBOOLSIGNEDUNSIGNEDFLOATINGCOMPLEX

后一组 {{NAME}}s 对应于数组接口类型字符串规范中使用的字母。

定义

整数的最大值和最小值

NPY_MAX_INT{bits}, NPY_MAX_UINT{bits}, NPY_MIN_INT{bits}

这些是为 {{bits}} =8、16、32、64、128和256,并提供相应(无符号)整数类型的最大(最小)值。注:实际整数类型可能不适用于所有平台(即128位和256位整数很少)。

NPY_MIN_{type}

这是为 {{type}} = BYTESHORTINTLONGLONGLONGINTP

NPY_MAX_{type}

这是为所有定义的 {{type}} = BYTEUBYTESHORTUSHORTINTUINTLONGULONGLONGLONGULONGLONGINTPUINTP

数据类型中的位数

所有 NPY_SIZEOF_{{CTYPE}} 常量具有相应的 NPY_BITSOF_{{CTYPE}} 已定义常量。这个 NPY_BITSOF_{{CTYPE}} 常量提供数据类型中的位数。具体来说,可用的 {{CTYPE}}s

BOOLCHARSHORTINTLONGLONGLONGFLOATDOUBLELONGDOUBLE

对枚举类型数的位宽度引用

所有数值数据类型(整数、浮点和复数)都具有定义为特定枚举类型号的常量。位宽度类型引用的具体枚举类型取决于平台。特别是,可用的常量是 PyArray_{{NAME}}{{BITS}} 在哪里? {{NAME}}INTUINTFLOATCOMPLEX{{BITS}} 可以是8、16、32、64、80、96、128、160、192、256和512。显然,并非所有的位宽度在所有平台上都适用于所有类型的数字类型。通常8位、16位、32位、64位整数;32位、64位浮点数;以及64位、128位复杂类型可用。

可容纳指针的整数

常量 NPY_INTPNPY_UINTP 引用一个枚举整数类型,该类型的大小足以在平台上容纳指针。索引数组应始终转换为 NPY_INTP ,因为数组的维数是npyu intp类型。

C型名称

每个数值数据类型和bool数据类型都有标准变量类型。其中一些已经在C规范中提供。您可以使用这些类型在扩展代码中创建变量。

布尔

type npy_bool

无符号字符;常量 NPY_FALSENPY_TRUE 也被定义。

(无符号整数)

整数的无符号版本可以通过在整数名称前面预先挂起一个“u”来定义。

type npy_byte

烧焦

type npy_ubyte

无符号字符

type npy_short

短的

type npy_ushort

无符号短整型

type npy_int

利息

type npy_uint

无符号整型

type npy_int16

16位整数

type npy_uint16

16位无符号整数

type npy_int32

32位整数

type npy_uint32

32位无符号整数

type npy_int64

64位整数

type npy_uint64

64位无符号整数

type npy_long

长整型

type npy_ulong

无符号长整型

type npy_longlong

双长整型

type npy_ulonglong

无符号长长整型

type npy_intp

py_intptr_t(平台上指针大小的整数)。

type npy_uintp

无符号py-intptr-t(平台上指针大小的整数)。

(复杂)浮点

type npy_half

16位浮标

type npy_float

32位浮标

type npy_cfloat

32位复数浮点

type npy_double

64位双

type npy_cdouble

64位复数双精度

type npy_longdouble

长双倍

type npy_clongdouble

长复式

复杂类型是指 真实的IMAG 成员(按顺序)。

位宽名称

也有针对特定位宽度的有符号整数、无符号整数、浮点和复杂浮点类型的typedef。可用的类型名是

npy_int{bits}, npy_uint{bits}, npy_float{bits}, and npy_complex{bits}

在哪里? {{bits}} 是类型中的位数,可以是 8163264 ,128和256表示整数类型;16, 3264 对于浮点类型,为80、96、128和256;以及32, 64128 ,160、192和512用于复杂值类型。哪些位宽度可用取决于平台。加粗的位宽度通常在所有平台上都可用。

打印格式

为了帮助打印,以下字符串在printf和相关命令中定义为正确的格式说明符。

NPY_LONGLONG_FMT
NPY_ULONGLONG_FMT
NPY_INTP_FMT
NPY_UINTP_FMT
NPY_LONGDOUBLE_FMT