У меня есть код Python, вывод которого представляет собой размерную матрицу, все записи которой относятся к типу float
. Если я сохраню его с расширением, .dat
размер файла будет порядка 500 МБ. Я читал, что использование значительно h5py
уменьшает размер файла. Итак, допустим, у меня есть двухмерный массив numpy с именем A
. Как мне сохранить его в файл h5py? Кроме того, как мне прочитать один и тот же файл и поместить его как массив numpy в другой код, если мне нужно выполнять манипуляции с массивом?
101
.dat
расширением сохраняете ?np.savetxt("output.dat",A,'%10.8e')
np.save('output.dat', A)
который сохранит его в двоичном формате (намного быстрее, гораздо меньше места используется).A = np.loadtxt('output.dat',unpack=True)
h5py
не создает файлы меньше, чем теnp.save
? этоh5py
быстрее , чемnp.save
для массивов размера данного в вопросе?Ответы:
h5py предоставляет модель наборов данных и групп . Первые представляют собой в основном массивы, а вторые можно рассматривать как каталоги. Каждый назван. Вам следует посмотреть документацию по API и примеры:
http://docs.h5py.org/en/latest/quick.html
Простой пример, когда вы создаете все данные заранее и просто хотите сохранить их в файл hdf5, будет выглядеть примерно так:
Затем вы можете загрузить эти данные обратно, используя: '
Обязательно посмотрите документы:
http://docs.h5py.org
Запись в файл hdf5 зависит либо от h5py, либо от pytables (у каждого есть свой API-интерфейс python, который находится поверх спецификации файла hdf5). Вам также следует взглянуть на другие простые двоичные форматы, изначально предоставляемые numpy, такие как
np.save
иnp.savez
т. Д .:http://docs.scipy.org/doc/numpy/reference/routines.io.html
источник
data.h5
существует, но я не могу просмотреть его с помощью HDFView. Я могу читать содержимое с помощью h5py, но не проверять его с помощью HDFView. Есть идеи, почему?Более чистый способ обработки открытия / закрытия файлов и предотвращения утечек памяти:
Подготовка:
Напишите:
Читать:
источник
with
Особенность Python известна как менеджер контекста. Он гарантирует, что файл будет закрыт после того, как он был использован. Дополнительная информация доступна в официальной документации: docs.python.org/3/library/contextlib.html