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

How does numpy determine the array data type when it contains multiple dtypes?

我正在尝试动手numpy,当我跨越以下数据类型时
使用内置方法dtype。以下是我得到的一些结果。
你能解释一下u11的意思吗

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

o / p => U11


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

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

1
2
3
4
5
6
7
8
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中有关字符串类型和其他数据类型对象的更多详细信息,以了解更多信息。