Предположим, что у меня есть словарь из примерно 100 тыс. Пар строк и матрица формы (100k, 500). Я хотел бы сохранить их на диск в одном файле.демпинг нескольких объектов в один и тот же файл
Что я сейчас делаю, использую cPickle для дампа словаря и scipy.io.savemat, чтобы выгрузить матрицу. Таким образом, сброс/загрузка происходит очень быстро. Но проблема в том, что, поскольку я использую разные методы, я получаю 2 файла, и я хотел бы иметь только один файл, содержащий мои 2 объекта. Как я могу это сделать?
Я мог бы cPickle их обоих в том же файле, но cPickle невероятно медленно на больших массивах.
Вы пробовали использовать более высокий протокол рассола? Протокол 0, который по умолчанию используется для Python2.7, преобразует все в ASCII, тогда как протоколы 1 и 2 создают двоичный вывод (обязательно откройте выходные файлы в двоичном режиме, то есть '' wb'', а не 'w ' '). ['joblib.dump'] (https://pythonhosted.org/joblib/generated/joblib.dump.html) - еще один очень быстрый метод для сериализации гетерогенных коллекций массивов и объектов Python. –
Посмотрите на 'np.savez'. Он сохраняет каждую переменную в файл в zip-архиве (который может быть сжат). Вы могли бы упаковать кучу маленьких не numpy объектов в словаре или список, который будет сохранен с pickle. 'load' ленив. – hpaulj