Store Numpy как маринованные панды, маринованные ножи или HDF5

Я сейчас работаю с 300 функциями float, поступающими из предварительной обработки информации о позиции. Такие элементы идентифицируются с помощью UUID (т.е. строки). Текущий размер файла составляет около 200 МБ. До сих пор я сохранил их как массивы Pickled numpy . Иногда мне нужно сопоставить UUID для элемента в строке Numpy. Для этого я использую словарь (хранящийся как json), который отображает UUID для строки в массиве numpy .

У меня возникло соблазн использовать Pandas и заменить этот словарь для индекса Pandas. Я также обнаружил формат файла HF5, но я хотел бы узнать немного больше, когда использовать каждый из них.

Я использую часть массива для подачи алгоритма scikit-Learn , а затем для классификации остальных.

Хранение маринованных массивов numpy действительно не оптимальный подход. Вместо этого вы можете использовать,

  • numpy.savez для сохранения словаря массива numpy в двоичном формате
  • хранить панды DataFrame в HDF5
  • напрямую используйте PyTables для записи массивов numpy в HDF5.

HDF5 является предпочтительным форматом для хранения научных данных, который включает, среди прочего,

  • возможности параллельного чтения / записи
  • алгоритмы сжатия на лету
  • эффективный запрос
  • способность работать с большими наборами данных, которые не вписываются в ОЗУ.

Хотя выбор формата выходного файла для хранения небольшого массива данных 200 МБ не является критическим и более удобным.