Я использовал numpy функцию savez
, чтобы сохранить совокупность numpy массивов, и произошло нечто странное. Я создал dict со всеми массивами, которые хотел сохранить, а затем напечатал nbytes
каждого его отдельного элемента, используя:
for key, item in data.items():
print(f'{key:10s}: {str(item.dtype):20s}:{str(item.shape):20s} -- {item.nbytes:0.2f}B = {item.nbytes/10e6:0.2f}MB;')
, и мой вывод был:
values : float64 :(34542, 2, 150, 1) -- 82900800.00B = 8.29MB;
names : <U4 :(2,) -- 32.00B = 0.00MB;
labels : int32 :(34571,) -- 138284.00B = 0.01MB;
timestamp : timedelta64[ns] :(34571,) -- 276568.00B = 0.03MB;
valid : uint8 :(34571,) -- 34571.00B = 0.00MB;
, на которых размещается до 8,3 МБ общих данных. Однако, когда я сохраняю этот агрегат, используя:
np.savez(outfile, **data)
, результирующий .npz
становится почти 10 раз больше, с 81 МБ! Для справки, когда я использую savez_compressed
вместо этого, файл заканчивается гораздо более разумными 3,3 МБ. Итак, в чем причина такого огромного расхождения при использовании savez
?