numpy在包含多个dtypes时如何确定数组数据类型?

时间:2018-04-10 10:12:41

标签: python numpy numpy-dtype

我正在尝试在numpy上做手,我在以下数据类型时进行调整 使用内置方法dtype。以下我得到的一些结果。 你能解释一下u11的含义吗

a1 = np.array([3,5,'p'])
print(a1.dtype)

o / p => U11

1 个答案:

答案 0 :(得分:4)

Numpy的PyArrayObject类型的数组对象具有NPY_PRIORITY属性,该属性表示在包含异构项的情况下应被视为数组dtype的类型的优先级数据类型。您可以使用PyArray_GetPriority API访问此优先级,如果不存在该名称的属性,则返回obj或def的__array_priority__属性(转换为double)。在这种情况下,Unicode的优先级高于整数类型,这就是a1.dtype返回U11的原因。

现在,关于U11或一般U#,它由两部分组成。 U表示Unicode dtype#表示它可以容纳的元素数。但是在不同的平台上可能会有所不同。

In [45]: a1.dtype
Out[45]: dtype('<U21')  # 64bit Linux

In [46]: a1.dtype.type  # The type object used to instantiate a scalar of this data-type. 
Out[46]: numpy.str_

In [49]: a1.dtype.itemsize
Out[49]: 84 # 21 * 4

在文档https://docs.scipy.org/doc/numpy-1.14.0/reference/arrays.dtypes.html#data-type-objects-dtype中阅读有关字符串类型和其他数据类型对象的更多详细信息。