我有一个简单的问题,使用 np.dtype
在下面的代码中演示。
In [1]: import numpy as np
In [2]: var = np.arange(5, dtype=np.int32)
In [3]: print(var)
[0 1 2 3 4]
In [4]: print(var.dtype)
int32
In [5]: print(np.dtype(var))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-03f3349b4160> in <module>
----> 1 print(np.dtype(var))
TypeError: data type not understood
为什么我得到两个不同的结果?
正如 @yatu 在评论中提到的。numpy.dtype
不会返回一个数组的数据类型。它只创建dtype对象。另一方面。ndarray.dtype
返回和数组数据类型。为了更好地理解这一点,下面是一个示例代码。
a = np.dtype(np.int16)
b = np.array([1., 2., 3.])
c = np.array([1., 2., 3.], a)
注意dtype对象 a
传给数组 c
当它被创建时。
输出。
a: int16
b.dtype: float64
c.dype: int16
numpy.dtype()
是创建数据类型对象的构造函数,而numpy数组的类型为 var
可以通过 var.dtype
更多信息请见 numpy手册 或查看docstring。
numpy.dtype(self, , *args, **kwargs)
Docstring: dtype(obj, align=False, copy=False)
创建一个数据类型对象。
numpy数组是同质的,并且包含由dtype对象描述的元素。一个dtype对象可以由不同的基本数字类型组合来构建。 [...]