我使用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为什么我会得到两个不同的结果?
发布于 2020-04-30 17:25:36
正如注释中所提到的,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发布于 2020-04-30 17:23:44
numpy.dtype()是创建数据类型对象的构造函数,而numpy数组var的类型可以通过var.dtype访问。
您可以在numpy手册中或通过查看docstring找到更多信息:
numpy.dtype(self,/,*args,**kwargs) Docstring: D型(obj,align=False,copy=False) 创建数据类型对象。 numpy数组是同构的,包含由dtype对象描述的元素。dtype对象可以由基本数字类型的不同组合来构造。..。
https://stackoverflow.com/questions/61529012
复制相似问题