5

有没有一种简单的方法来获取对应于特定 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]

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

4

1 回答 1

8

您可以使用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。据我所知,它可能会创建其参数的一个实例。)

于 2013-10-25T21:55:38.923 回答