数据类型API¶
标准数组可以有24种不同的数据类型(并支持添加您自己的类型)。这些数据类型都具有枚举类型、枚举类型字符和相应的数组标量python类型对象(放置在层次结构中)。还有标准的C typedef,以便更容易地操作给定数据类型的元素。对于数字类型,还有位宽度等效的C typedef和命名的typenumber,使选择所需的精度更加容易。
警告
C代码中类型的名称更接近于C命名约定。这些类型的python名称遵循python约定。因此, NPY_FLOAT
在C中获取32位浮点,但是 numpy.float_
在python中对应于64位的double。为了清晰起见,可以在python和c中使用位宽度名称。
枚举类型¶
-
NPY_TYPES
¶
这里有一个枚举类型列表,提供了基本的24个数据类型和一些有用的通用名称。每当代码需要类型号时,都会请求这些枚举类型之一。所有类型都被调用 NPY_{{NAME}}
:
-
NPY_BOOL
¶ 布尔类型的枚举值,存储为一个字节。它只能设置为值0和1。
-
NPY_BYTE
¶
-
NPY_INT8
¶ 8位/1字节有符号整数的枚举值。
-
NPY_SHORT
¶
-
NPY_INT16
¶ 16位/2字节有符号整数的枚举值。
-
NPY_INT
¶
-
NPY_INT32
¶ 32位/4字节有符号整数的枚举值。
-
NPY_LONG
¶ 相当于npy-int或npy-longlong,取决于平台。
-
NPY_LONGLONG
¶
-
NPY_INT64
¶ 64位/8字节有符号整数的枚举值。
-
NPY_UBYTE
¶
-
NPY_UINT8
¶ 8位/1字节无符号整数的枚举值。
-
NPY_USHORT
¶
-
NPY_UINT16
¶ 16位/2字节无符号整数的枚举值。
-
NPY_UINT
¶
-
NPY_UINT32
¶ 32位/4字节无符号整数的枚举值。
-
NPY_ULONG
¶ 相当于npy-uint或npy-oulonglong,取决于平台。
-
NPY_ULONGLONG
¶
-
NPY_UINT64
¶ 64位/8字节无符号整数的枚举值。
-
NPY_HALF
¶
-
NPY_FLOAT16
¶ 16位/2字节IEEE 754-2008兼容浮点类型的枚举值。
-
NPY_FLOAT
¶
-
NPY_FLOAT32
¶ 32位/4字节IEEE 754兼容浮点类型的枚举值。
-
NPY_DOUBLE
¶
-
NPY_FLOAT64
¶ 64位/8字节IEEE 754兼容浮点类型的枚举值。
-
NPY_LONGDOUBLE
¶ 特定于平台的浮点类型的枚举值,该值至少与npy_double一样大,但在许多平台上更大。
-
NPY_CFLOAT
¶
-
NPY_COMPLEX64
¶ 由两个npy_浮点值组成的64位/8字节复杂类型的枚举值。
-
NPY_CDOUBLE
¶
-
NPY_COMPLEX128
¶ 由两个npy_双精度值组成的128位/16字节复杂类型的枚举值。
-
NPY_CLONGDOUBLE
¶ 平台特定的复杂浮点类型的枚举值,由两个npy longdouble值组成。
-
NPY_DATETIME
¶ 数据类型的枚举值,它以基于可选日期或时间单位的精度保存日期或日期时间。
-
NPY_TIMEDELTA
¶ 数据类型的枚举值,它以可选择日期或时间单位的整数形式保存时间长度。
-
NPY_STRING
¶ 可选大小的ASCII字符串的枚举值。字符串在给定数组中的最大大小是固定的。
-
NPY_UNICODE
¶ 可选大小的UCS4字符串的枚举值。字符串在给定数组中的最大大小是固定的。
-
NPY_OBJECT
¶ 对任意python对象的引用的枚举值。
-
NPY_VOID
¶ 主要用于保存结构数据类型,但可以包含任意二进制数据。
上述类型的一些有用别名是
-
NPY_INTP
¶ 与(void)大小相同的带符号整数类型的枚举值 * 指针。这是所有索引数组使用的类型。
-
NPY_UINTP
¶ 与(void)大小相同的无符号整数类型的枚举值 * 指针。
-
NPY_MASK
¶ 用于掩码的类型的枚举值,例如
NPY_ITER_ARRAYMASK
迭代器标志。这相当于NPY_UINT8
.
-
NPY_DEFAULT_TYPE
¶ 当没有显式指定数据类型时使用的默认类型,例如在调用np.zero(shape)时。这相当于
NPY_DOUBLE
.
其他有用的相关常量包括
-
NPY_NTYPES
¶ 内置numpy类型的总数。枚举范围从0到npy类型s-1。
-
NPY_NOTYPE
¶ 保证信号值不是有效的类型枚举数。
-
NPY_USERDEF
¶ 用于自定义数据类型的类型编号的开头。
指示某些类型的各种字符代码也是枚举列表的一部分。对类型字符的引用(如果需要的话)应该始终使用这些枚举。它们的形式是 NPY_{{NAME}}LTR
在哪里? {{NAME}}
可以是
BOOL , BYTE , UBYTE , SHORT , USHORT , INT , UINT , LONG , ULONG , LONGLONG , ULONGLONG , HALF , FLOAT , DOUBLE , LONGDOUBLE , CFLOAT , CDOUBLE , CLONGDOUBLE , DATETIME , TIMEDELTA , OBJECT , STRING , VOID
INTP , UINTP
GENBOOL , SIGNED , UNSIGNED , FLOATING , COMPLEX
后一组 {{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}}
= BYTE , SHORT , INT , LONG , LONGLONG , INTP
-
NPY_MAX_{type}
这是为所有定义的
{{type}}
= BYTE , UBYTE , SHORT , USHORT , INT , UINT , LONG , ULONG , LONGLONG , ULONGLONG , INTP , UINTP
数据类型中的位数¶
所有 NPY_SIZEOF_{{CTYPE}}
常量具有相应的 NPY_BITSOF_{{CTYPE}}
已定义常量。这个 NPY_BITSOF_{{CTYPE}}
常量提供数据类型中的位数。具体来说,可用的 {{CTYPE}}s
是
BOOL , CHAR , SHORT , INT , LONG , LONGLONG , FLOAT , DOUBLE , LONGDOUBLE
对枚举类型数的位宽度引用¶
所有数值数据类型(整数、浮点和复数)都具有定义为特定枚举类型号的常量。位宽度类型引用的具体枚举类型取决于平台。特别是,可用的常量是 PyArray_{{NAME}}{{BITS}}
在哪里? {{NAME}}
是 INT , UINT , FLOAT , COMPLEX 和 {{BITS}}
可以是8、16、32、64、80、96、128、160、192、256和512。显然,并非所有的位宽度在所有平台上都适用于所有类型的数字类型。通常8位、16位、32位、64位整数;32位、64位浮点数;以及64位、128位复杂类型可用。
可容纳指针的整数¶
常量 NPY_INTP 和 NPY_UINTP 引用一个枚举整数类型,该类型的大小足以在平台上容纳指针。索引数组应始终转换为 NPY_INTP ,因为数组的维数是npyu intp类型。
C型名称¶
每个数值数据类型和bool数据类型都有标准变量类型。其中一些已经在C规范中提供。您可以使用这些类型在扩展代码中创建变量。
(无符号整数)¶
整数的无符号版本可以通过在整数名称前面预先挂起一个“u”来定义。
-
npy_(u)byte
(无符号)字符
-
npy_short
¶ 短的
-
npy_ushort
¶ 无符号短整型
-
npy_uint
¶ 无符号整型
-
npy_int
¶ 利息
-
npy_int16
¶ 16位整数
-
npy_uint16
¶ 16位无符号整数
-
npy_int32
¶ 32位整数
-
npy_uint32
¶ 32位无符号整数
-
npy_int64
¶ 64位整数
-
npy_uint64
¶ 64位无符号整数
-
npy_(u)long
(无符号)长整型
-
npy_(u)longlong
(无符号长整型整数)
-
npy_intp
¶ py_intptr_t(平台上指针大小的整数)。
-
npy_uintp
¶ 无符号py-intptr-t(平台上指针大小的整数)。
(复杂)浮点¶
-
npy_half
¶ 16位浮标
-
npy_(c)float
32位浮标
-
npy_(c)double
64位双
-
npy_(c)longdouble
长双倍
复杂类型是指 真实的 和 IMAG 成员(按顺序)。
位宽名称¶
也有针对特定位宽度的有符号整数、无符号整数、浮点和复杂浮点类型的typedef。可用的类型名是
npy_int{bits}
,npy_uint{bits}
,npy_float{bits}
, andnpy_complex{bits}
在哪里? {{bits}}
是类型中的位数,可以是 8 , 16 , 32 , 64 ,128和256表示整数类型;16, 32 , 64 对于浮点类型,为80、96、128和256;以及32, 64 , 128 ,160、192和512用于复杂值类型。哪些位宽度可用取决于平台。加粗的位宽度通常在所有平台上都可用。
打印格式¶
为了帮助打印,以下字符串在printf和相关命令中定义为正确的格式说明符。
NPY_LONGLONG_FMT
,NPY_ULONGLONG_FMT
,NPY_INTP_FMT
,NPY_UINTP_FMT
,NPY_LONGDOUBLE_FMT