我正在尝试使用 numpy,当使用内置方法 dtype 时,我发现了以下数据类型。按照我得到的几个结果。你能解释一下u11是什么意思吗
a1 = np.array([3,5,'p'])
print(a1.dtype)
o/p = >U11
我正在尝试使用 numpy,当使用内置方法 dtype 时,我发现了以下数据类型。按照我得到的几个结果。你能解释一下u11是什么意思吗
a1 = np.array([3,5,'p'])
print(a1.dtype)
o/p = >U11
Numpy 的数组对象是PyArrayObject
类型,NPY_PRIORITY
在数组包含具有异构数据类型的项目的情况下,该属性表示项目类型的优先级。您可以使用根据文档PyArray_GetPriority
返回属性的 API访问此优先级 :__array_priority__
class.__array_priority__
:该属性的值用于确定在返回对象的 Python 类型有多种可能性的情况下返回什么类型的对象。子类继承此属性的默认值 0.0。
现在,在这种情况下,Unicode 具有比整数类型更高的优先级,这就是为什么a1.dtype
返回U11
.
关于U11
or 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中阅读有关字符串类型和其他数据类型对象的更多详细信息。