почему numpy int16 дает 26 байт памяти? - PullRequest
0 голосов
/ 20 октября 2019

Мне нужно целое число фиксированного размера (2 байта / 16 бит) для дальнейшей обработки. Но sys.getsizeof () печатает размер 26, у меня нет ничего большего или меньшего, чем может выдержать max и min 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

1 Ответ

0 голосов
/ 20 октября 2019

Вы смотрите на размер объекта-оболочки, а не на размер элемента массива. Элементы массива имеют размер 2 байта, а не 26. Вы можете убедиться в этом, изучив атрибут массива itemsize.

sys.getsizeof интерпретировать гораздо сложнее, чем кажется на первый взгляд, иИз всех случаев, когда новый программист испытывает искушение использовать его, он почти никогда не подходит.

...