Я обрабатываю большие 3D-массивы, которые мне часто нужно нарезать различными способами, чтобы делать разнообразный анализ данных. Типичный "куб" может быть ~ 100 ГБ (и, вероятно, в будущем будет больше)
Похоже, что типичный рекомендуемый формат файла для больших наборов данных в python - использовать HDF5 (либо h5py, либо pytables). Мой вопрос: есть ли какая-либо скорость или использование памяти для использования HDF5 для хранения и анализа этих кубов за их хранение в простых плоских двоичных файлах? Является ли HDF5 более подходящим для табличных данных, в отличие от больших массивов, как то, с чем я работаю? Я вижу, что HDF5 может обеспечить хорошее сжатие, но меня больше интересует скорость обработки и обработка переполнения памяти.
Я часто хочу проанализировать только одно большое подмножество куба. Один из недостатков обоих pytables и h5py заключается в том, что когда я беру кусочек массива, я всегда возвращаю массив numpy, используя память. Однако, если я нарезаю numpy memmap плоского двоичного файла, я могу получить представление, которое хранит данные на диске. Таким образом, кажется, что я могу более легко анализировать определенные разделы моих данных, не перегружая свою память.
Я изучил как pytables, так и h5py, и не видел преимуществ до сих пор для моей цели.