如何不关注字节大小判断numpy dtype是否为整数类型?
如何不关注字节大小判断NumPy dtype是否为整数类型
当然有快速简便的方法!不需要纠结具体是32位还是64位整数,NumPy本身就提供了直接的判断方式,下面给你两种常用的方案:
方法1:使用np.issubdtype()
这是最推荐的方式,它会检查目标dtype是否是指定类型的子类。NumPy里的np.integer是所有整数类型(包括有符号的int8/16/32/64,无符号的uint8/16/32/64等)的父类,所以不管字节大小,只要是整数类型都会返回True。
示例代码:
import numpy as np val = np.array([[2], [3], [4]]).astype(np.int32) print(np.issubdtype(val.dtype, np.integer)) # 输出: True # 如果只想判断有符号整数,可以用np.signedinteger print(np.issubdtype(val.dtype, np.signedinteger)) # 输出: True # 判断无符号整数则用np.unsignedinteger uint_val = np.array([1,2,3]).astype(np.uint64) print(np.issubdtype(uint_val.dtype, np.unsignedinteger)) # 输出: True
方法2:检查dtype的kind属性
每个NumPy dtype都有一个kind属性,用来表示数据类型的大类:
'i'代表有符号整数'u'代表无符号整数
直接判断这个属性是否在对应的范围内即可:
示例代码:
import numpy as np val = np.array([[2], [3], [4]]).astype(np.int32) # 判断所有整数类型(有符号+无符号) print(val.dtype.kind in ('i', 'u')) # 输出: True # 只判断有符号整数 print(val.dtype.kind == 'i') # 输出: True
这两种方法都很高效,完全不需要关心字节数,按需选择就行~
内容的提问来源于stack exchange,提问作者quanty
相关产品推荐
相关产品推荐

