我正在尝试在numpy上做手,我在以下数据类型时进行调整 使用内置方法dtype。以下我得到的一些结果。 你能解释一下u11的含义吗
a1 = np.array([3,5,'p'])
print(a1.dtype)
o / p => U11
答案 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中阅读有关字符串类型和其他数据类型对象的更多详细信息。