Nei*_*l G 28 python integer numpy abc
如何检查numpy dtype是否是完整的?我试过了:
issubclass(np.int64, numbers.Integral)
Run Code Online (Sandbox Code Playgroud)
但它给了False.
更新:它现在给出True.
Rob*_*ern 45
Numpy具有类似于类层次结构的dtypes层次结构(标量类型实际上具有反映dtype层次结构的真正的类层次结构).您可以np.issubdtype(some_dtype, np.integer)用来测试dtype是否为整数dtype.请注意,与大多数消耗np.issubdtype()dtype的函数一样,将其参数转换为dtypes,因此可以使用任何可以通过np.dtype()构造函数生成dtype的函数.
http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html#specifying-and-constructing-data-types
>>> import numpy as np
>>> np.issubdtype(np.int32, np.integer)
True
>>> np.issubdtype(np.float32, np.integer)
False
>>> np.issubdtype(np.complex64, np.integer)
False
>>> np.issubdtype(np.uint8, np.integer)
True
>>> np.issubdtype(np.bool, np.integer)
False
>>> np.issubdtype(np.void, np.integer)
False
Run Code Online (Sandbox Code Playgroud)
在numpy的未来版本中,我们将确保标量类型在适当的numbersABC 中注册.
use*_*342 14
请注意,这np.int64不是dtype,而是Python类型.如果你有一个实际的dtype(通过dtype数组的字段访问),你可以使用np.typecodes你发现的字典:
my_array.dtype.char in np.typecodes['AllInteger']
Run Code Online (Sandbox Code Playgroud)
如果您只有类型np.int64的类型,则可以先获取与该类型对应的dtype,然后按上述方式查询:
>>> np.dtype(np.int64).char in np.typecodes['AllInteger']
True
Run Code Online (Sandbox Code Playgroud)
Nei*_*l G 10
自从提出这个问题以来,NumPy 添加了适当的注册numbers,所以这有效:
issubclass(np.int64, numbers.Integral)
issubclass(np.int64, numbers.Real)
issubclass(np.int64, numbers.Complex)
Run Code Online (Sandbox Code Playgroud)
这比深入研究更深奥的 NumPy 界面更优雅。
要对 dtype 实例执行此检查,请使用其.type属性:
issubclass(array.dtype.type, numbers.Integral)
issubclass(array.dtype.type, numbers.Real)
issubclass(array.dtype.type, numbers.Complex)
Run Code Online (Sandbox Code Playgroud)
基于以前的答案和评论,我已经决定type将dtype对象的属性与 Python 的内置issubclass()方法和numbers模块一起使用:
import numbers
import numpy
assert issubclass(numpy.dtype('int32').type, numbers.Integral)
assert not issubclass(numpy.dtype('float32').type, numbers.Integral)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12271 次 |
| 最近记录: |