Эффективно сохранить массив 4D с двоичной информацией - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть массив 4D, где каждое значение на оси = 3 равно 1 или 0. Я попытался сохранить его в виде массива в файле .npy. Но для массива (252 512 512,6) это уже дало 3 ГБ данных. Мне интересно, возможно ли хранить данные такого рода гораздо более эффективным способом. Таким образом, резко уменьшив размер файла.

Я уже пытался использовать «False» и «True», и я уменьшил его до 400 МБ, но я все еще смотрю на возможность дальнейшего уменьшения указанного числа. Либо через тип данных, как я его сохраняю.

1 Ответ

1 голос
/ 20 февраля 2020

Вы можете использовать np.savez_compressed, что значительно сократит массив и уменьшит размер файла:

# create sample array:
>>> x = np.random.randint(1, 30, size=(252, 512, 512, 6))

>>> np.savez("test.npz", x)
# test.npz is 2.95GB

>>> np.savez_compressed("test2.npz", arr = x)
# test2.npz is 369MB

Чтобы перезагрузить массив, используйте

>>> loaded = np.load("test2.npz")
>>> x2 = loaded["arr"]

И вы можете проверить, что x2 (ваш повторно загруженный массив) равен x (ваш исходный массив)

>>> np.array_equal(x, x2)
True
...