Сериализация кортежа массивов - PullRequest
3 голосов
/ 02 марта 2011

У меня есть пара пустых матриц (точнее, трехмерных), которые хранятся в кортежах

(a1,b1,c1)
(a2,b2,c2)
...
(an,bn,cn)

Я хотел бы сериализовать каждый кортеж в файл, который можно прочитать обратно в Python надругая машина (Linux => Windows, оба x86-64).Каков был бы питонский способ сделать это?

Ответы [ 4 ]

6 голосов
/ 02 марта 2011

numpy.savez или numpy.savez_compressed - это путь. Я слышал, но никогда не сталкивался с проблемами с определенными типами массивов, плохо обрабатывающих данные.

Я вспоминаю этот пост (кажется, не так уж и много проблем), а также что-то о numpy.void не засорение . Скорее всего, это не проблема, но это так.

1 голос
/ 02 марта 2011

Я обычно использую cPickle, хотя я не проводил формального сравнения с другими методами. Кроме того, я всегда записываю файл в двоичном виде и использую самые высокие настройки протокола:

f = open('fname.pkl','wb')
cPickle.dump(array_tuple,f,-1)
f.close()
1 голос
/ 02 марта 2011

Используйте shelve, pickle, cPickle или shove. Каждый из них позволит вам хранить большинство типов объектов Python в файле; shove и shelve фокусируются на словоподобных объектах, которые отображают ключи на значения, а shove позволит вам использовать различные базы данных, похожие на серверные. Если вы обнаружите, что превышаете ограничения производительности для этих библиотек, подумайте о том, чтобы пойти по маршруту базы данных, например, до SQLAlchemy .

Я использовал каждую из этих библиотек, и они достаточно хорошо работают в своей нише. Я бы начал с pickle или shelve, которые являются стандартной библиотекой.

1 голос
/ 02 марта 2011

Рассол, вероятно, будет хорошо работать

Я тоже видел это: http://thsant.blogspot.com/2007/11/saving-numpy-arrays-which-is-fastest.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...