是否有一种简单的方法可以获得与特定numpy类型相对应的8位字节数?
我知道我可以这样做:
lookup = {np.uint8: 1, np.int8: 1,
np.uint16: 2, np.int16: 2,
np.uint32: 4, np.int32: 4,
np.uint64: 8, np.int64: 8}
def getByteSize(dtype):
return lookup[dtype]
但这看起来有点笨拙,似乎应该有一种内置的检索此信息的方法。
答案 0 :(得分:6)
您可以使用类型实例的nbytes
属性:
In [8]: np.uint8(0).nbytes
Out[8]: 1
In [9]: np.uint16(0).nbytes
Out[9]: 2
In [10]: np.uint32(0).nbytes
Out[10]: 4
等
您可以删除参数(假定为0),您也可以使用itemsize
属性而不是nbytes
:
In [13]: np.int32().itemsize
Out[13]: 4
(显然)避免创建数字类型实例的方法是创建dtype
对象,然后访问其itemsize
属性(但我怀疑这将是更多的内存或时间效率高于简单地创建数字类型的实例):
In [14]: dt = np.dtype(np.int32)
In [15]: dt.itemsize
Out[15]: 4
(我说“显然”是因为我没有查看dtype
的源代码。据我所知,它可能会创建其参数的实例。)