为什么numpy int16给26个字节的内存空间?

时间:2019-10-20 04:06:59

标签: python numpy type-conversion

我希望使用固定大小(2字节/ 16位)的整数进行进一步处理。但是sys.getsizeof()打印的大小为26,我没有大于或小于int16可以容纳的max和min的任何值。为什么会这样,我该如何解决?同样,当我将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

1 个答案:

答案 0 :(得分:0)

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

sys.getsizeof难以理解,比直观上看起来要难得多,而且在新程序员尝试使用它的所有时刻中,它几乎从来都不是正确的工具。