4

我正在尝试使用 numpy,当使用内置方法 dtype 时,我发现了以下数据类型。按照我得到的几个结果。你能解释一下u11是什么意思吗

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

o/p = >U11

4

1 回答 1

6

Numpy 的数组对象是PyArrayObject类型,NPY_PRIORITY在数组包含具有异构数据类型的项目的情况下,该属性表示项目类型的优先级。您可以使用根据文档PyArray_GetPriority返回属性的 API访问此优先级 :__array_priority__

class.__array_priority__:该属性的值用于确定在返回对象的 Python 类型有多种可能性的情况下返回什么类型的对象。子类继承此属性的默认值 0.0。

现在,在这种情况下,Unicode 具有比整数类型更高的优先级,这就是为什么a1.dtype返回U11.

关于U11or 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中阅读有关字符串类型和其他数据类型对象的更多详细信息。

于 2018-04-10T10:54:49.990 回答