如何解决断言 numpy dtype 是任何类型的整数
我有一个函数可以接受整数类型的 numpy 数组,即 int32
、uint8
、>i4
等。现在我有类似的东西
def myfun(a):
a = np.asarray(a)
assert a.dtype in [
"int8","int16","int32","int64","uint8","uint16","uint32","uint64",">i1",">i2",# ...
]
我不确定我是否遗漏了什么。是否有 NumPy 函数可以为我执行此操作?
解决方法
您可以只使用 np.issubdtype
的 np.integer
:
dtypes = np.int64,np.float64,np.uint8,'>i2'
for dtype in dtypes:
print(f"{dtype} is integer? {np.issubdtype(dtype,np.integer)}")
# <class 'numpy.int64'> is integer? True
# <class 'numpy.float64'> is integer? False
# <class 'numpy.uint8'> is integer? True
# >i2 is integer? True
,
我发现查看以下描述 numpy 中的类型层次结构的文档。 https://numpy.org/doc/stable/reference/arrays.scalars.html
a = np.array([1,2]).astype(">i2")
if issubclass(a.dtype.type,np.integer):
print("Type is an integer!")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。