Комментарии 14
И ещё дополнительные фильтры можно прицеплять к уже созданному файлу, например:
h5repack -f FLET in.h5 out.h5
— добавит фильтр для подсчёта контрольной суммы к файлу in.h5 и сохранит его в out.h5. Потом контроль целостности будет автоматически проверятся если его открывать через h5pyАналогично с упаковкой, можо сначала создавать и работать с файлами без неё, а потом запаковать файлы и продолжать работать с потерей скорости:
h5repack -f SHUF -f GZIP=9 in.h5 out.h5
HDF5 — крутой и продуманный формат, а многие про него даже не слышали. Хорошо, что вы написали про него, но в статье местами очень корявый перевод.
Например, "имитируемые данные" (что это вообще?) или "надстроенная библиотека".
Наборы данных (dataset) являются хранителями наших данных, в основном строительных блоков формата HDF5.
Несогласованное предложение.
мы просто создаем пустой набор данных, способный удерживать до 1000 элементов
Возможно, лучше использовать слово "хранить" вместо "удерживать"?
Фраза "Оптимизация пространства" вообще звучит странно, особенно в контексте работы с типами данных и занимаемой памятью.
Чтобы иметь возможность расширять третью ось нашего набора данных без фиксированного максимума
Я понимаю, что в numpy-терминологии есть понятие axis, но по-русски "расширять ось" и "фиксированный максимум" в этом контексте звучит странно.
Представьте, что вы приобретаете фильм, но вы не знаете, как долго он будет идти.
Думаю, тут имеется в виду получение данных видеопотока с камеры, например, а из предложения можно понять, что мы покупаем фильм и не знаем сколько он будет идти. И как это связано с HDF5? :)
d = f.create_dataset('dataset', (100000,), dtype='float16')
создаёт массив с 16-и битными float'ами (т.е по 2 байта), позволяет сильно экономить место на диске, если нормальная точность не нужна.
А как идет запись изменений — только дописывания файла или изменение в любой его части?
Что насчет эффективности хранения мультимедии или любых пользовательских файлов, а не только сырых математических данных?
Есть ли примеры сравнения с другими форматами, вроде Pack файла гита или всяких других форматов хранения данных, вроде формата borgbackup?
Было бы круто сделать такое расширенное сравнение на хабре, вместо чтения исходной документации :)
Парочка добавлений:
- Кроме h5py есть основанный на нем pyTables предоставляющий более высокоуровневый интерфейс.
- Есть набор консольных утилит для взаимодействия с hdf5 файлами.
- Pandas частично поддерживает импорт/экспорт в hdf5
- Зачастую полезно установить степень сжатия в 1, тогда потери на работу процессора будут меньше чем уменьшение времени записи и общая производительность будет выше.
Как использовать HDF5-файлы в Python