【发布时间】:2016-10-28 19:29:39
【问题描述】:
我有不同类型的数据。其中大多数是int,有时是float。 int 的大小不同,因此大小为 8/ 16/ 32 位。
对于这种情况,我正在创建一个数字类型转换器。因此我使用isinstence() 检查类型。这是因为我读到isinstance() 比type() 差。
关键是我得到的很多数据都是 numpy 数组。我使用 spyder 作为 IDE,然后我看到变量也是一种类型。但是当我输入isinstance(var,'type i read') 时,我得到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()中是否有一些方法没有所有手动索引? (自动索引等)?
【问题讨论】:
-
你在哪里有不同整数大小的数据?作为 Python 对象、numpy 数组、文件?您可能需要为使用数值类型转换器提供更多上下文。
-
主要是多声道音频文件
-
你打算如何转换数据类型?
-
从 int 类型/numpy.intXX 类型更改为 (numpy.)float(64) 并按整数大小缩小。所以一切都是 -1 min 到 +1 max
-
我在
np.can_cast和.astype的回答中添加了注释。
标签: python-3.x numpy isinstance