Мне нужен способ для эффективного хранения (размер и скорость чтения) данных с использованием бесчисленных массивов со смешанными (разнородными) типами.Представьте себе набор данных, который имеет 100M наблюдений и 5 переменных на наблюдение (3 из которых int32, а 2 - float32).
В настоящее время я храню данные в двух сжатых файлах .npy, один для целых чисел.и один для чисел с плавающей точкой:
import numpy as np
import gzip as gz
with gz.open('array_ints.npy.gz', 'wb') as fObj:
np.save(fObj, int_ndarray)
with gz.open('array_floats.npy.gz', 'wb') as fObj:
np.save(fObj, flt_ndarray)
Я также пытался сохранить данные в виде структурированного массива, но окончательный размер файла примерно на 25% больше, чем объединенный размер хранения целых чисел и чисел с плавающей запятой отдельно.Мои данные простираются до диапазона ТБ, поэтому я ищу наиболее эффективный способ их хранения (но я бы хотел избежать изменения алгоритмов сжатия на что-то вроде LZMA).
Есть ли другой способ отличатьсятипы данных эффективно хранятся вместе, так что я могу читать в обоих одновременно?Я начинаю изучать HD5, но я не уверен, что это может помочь.
РЕДАКТИРОВАТЬ:
В конечном итоге, я пошел по маршруту HD5 с h5py.Относительно сжатых gzip массивов .npy, я на самом деле вижу уменьшение размера на 25% при использовании h5py.Однако это можно отнести к фильтру в случайном порядке.Но при сохранении двух массивов в одном файле практически нет накладных расходов по сравнению с сохранением отдельных файлов.
Я понимаю, что первоначальный вопрос был слишком широким, и невозможно дать достаточные ответы без конкретного формата данных и репрезентативной выборки (которую я не могу на самом деле раскрыть).По этой причине я закрываю вопрос.