Общий файл .npz имеет гораздо больший размер, чем отдельные элементы - PullRequest
0 голосов
/ 21 февраля 2020

Я использовал 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...