从numpy类型获取位数的简单方法?

时间:2013-10-25 21:42:07

标签: python types numpy

是否有一种简单的方法可以获得与特定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]

但这看起来有点笨拙,似乎应该有一种内置的检索此信息的方法。

1 个答案:

答案 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的源代码。据我所知,它可能会创建其参数的实例。)