为什么 Numpy int16 提供 26 字节的内存空间?



我想要一个固定大小(2 字节/16 位(的整数以供进一步处理。但是 sys.getsizeof(( 打印的大小为 26,我没有比 int16 可以容纳的最大和最小值更大或更小的东西。为什么会这样,我该如何解决?同样,当我将 int16 更改为 int32 时,sys.getsizeof(( 打印 28 并将 int64 打印为 32。

def quantization_to_16_bit_int(float_list):
ratio = 2/65536
quantized_list = []
for i in range(len(float_list)):
v = round(float_list[i]/ratio)
quantized_list.append(v)
result = np.int16(quantized_list)
print(sys.getsizeof(result[0]))
return result

您正在查看包装对象的大小,而不是数组元素的大小。数组元素是 2 个字节,而不是 26 个字节。您可以通过检查数组的itemsize属性来查看这一点。

sys.getsizeof比直觉看起来更难解释,而且在所有时候,新程序员会试图使用它,它几乎从来都不是正确的工具。

最新更新