numpy.dtype

原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

class numpy.dtype[source]

创建数据类型对象。

numpy数组是同构的,并且包含由dtype对象描述的元素。dtype对象可以由基本数值类型的不同组合构成。

参数:

obj

要转换为数据类型对象的对象。

align:bool,可选

向字段添加填充以匹配C编译器将为类似的C结构输出的内容。只有obj是字典或逗号分隔的字符串时,才可以True如果正在创建struct dtype,则还会设置粘性对齐标记isalignedstruct

copy:bool,可选

创建数据类型对象的新副本。如果False,结果可能只是对内置数据类型对象的引用。

也可以看看

result_type

例子

使用数组标量类型:

>>> np.dtype(np.int16)
dtype('int16')

结构化类型,一个字段名为'f1',包含int16:

>>> np.dtype([('f1', np.int16)])
dtype([('f1', '<i2')])

结构化类型,一个名为“f1”的字段,本身包含具有一个字段的结构化类型:

>>> np.dtype([('f1', [('f1', np.int16)])])
dtype([('f1', [('f1', '<i2')])])

结构化类型,两个字段:第一个字段包含一个unsigned int,第二个包含int32:

>>> np.dtype([('f1', np.uint), ('f2', np.int32)])
dtype([('f1', '<u4'), ('f2', '<i4')])

使用数组协议类型字符串:

>>> np.dtype([('a','f8'),('b','S10')])
dtype([('a', '<f8'), ('b', '|S10')])

使用逗号分隔的字段格式。形状为(2,3):

>>> np.dtype("i4, (2,3)f8")
dtype([('f0', '<i4'), ('f1', '<f8', (2, 3))])

使用元组。int是固定类型,3是字段的形状。void是一种灵活类型,此处为大小10:

>>> np.dtype([('hello',(np.int,3)),('world',np.void,10)])
dtype([('hello', '<i4', 3), ('world', '|V10')])

int16细分为2 int8,称为x和y。0和1是字节的偏移量:

>>> np.dtype((np.int16, {'x':(np.int8,0), 'y':(np.int8,1)}))
dtype(('<i2', [('x', '|i1'), ('y', '|i1')]))

使用字典。两个名为“gender”和“age”的字段:

>>> np.dtype({'names':['gender','age'], 'formats':['S1',np.uint8]})
dtype([('gender', '|S1'), ('age', '|u1')])

以字节为单位的偏移量,此处为0和25:

>>> np.dtype({'surname':('S25',0),'age':(np.uint8,25)})
dtype([('surname', '|S25'), ('age', '|u1')])

属性

base
descr 数组类型的数组接口完全描述。
fields 为此数据类型定义的命名字段字典,或None
hasobject 布尔值,指示此dtype是否在任何字段或子类型中包含任何引用计数的对象。
isalignedstruct 布尔值,表示dtype是否为保持字段对齐的结构体。
isbuiltin 整数指示此dtype如何与内置的dtype相关。
isnative 布尔值,指示此dtype的字节顺序是否为平台本地的。
metadata
name 此数据类型的位宽名称。
names 字段名称的有序列表,如果没有字段,则为None
shape 如果此数据类型描述子数组,则子数组的形状元组,否则为()
str 此数据类型对象的数组协议typestring。
subdtype Tuple (item_dtype, shape) if this dtype describes a sub-array, and None otherwise.

方法

newbyteorder([new_order]) 返回一个具有不同字节顺序的新dtype。