我拥有不同类型的数据,其中大部分是int
类型,有时候也会有float
类型。这些int
类型的数据大小不同,它们的大小可能是8/16/32个比特位。
针对这种情况,我正在创建一个数值类型转换器。因此我使用isinstance()
检查变量的类型。我读到isinstance()
比type()
要好一些。
问题在于,我得到了许多numpy数组数据。我使用Spyder作为IDE,并通过变量来查看它们的类型。但是当我输入isinstance(var,'我所读到的类型')
时,返回值却是False
。
我进行了一些检查:
a = 2.17
b = 3
c = np.array(np.random.rand(2, 8))
d = np.array([1])
对于isinstance(var, type)
,我得到:
isinstance(a, float)
True
isinstance(b, int)
True
isinstance(c, float) # or isinstance(c, np.float64)
False
isinstance(d, int) # or isinstance(c, np.int32)
False
c
和d
在我询问时为真。
isinstance(c, np.ndarray)
True
isinstance(d, np.ndarray)
True
我可以通过在ndarray
中执行步骤来进行检查isinstance(c[i][j], np.float64)
True
isinstance(d[i], np.int32)
True
但这意味着对于每个维度,我都必须添加一个新索引,否则它又变成了False
。
可以使用dtype
检查它们的类型,例如c.dtype == 'float64'
...
那么根据我所发现和尝试的内容... 我的问题基本上是:
var.dtype
方法与isinstance()
和type()
(更差/更好等)相比如何?- 如果
var.dtype
比isinstance()
更糟糕,那么是否有一种方法可以在isinstance()
中自动进行索引(自动索引等)?
np.can_cast
和.astype
的注释。 - hpaulj