我有一些numpy矩阵(确切地说是三维的),它们存储在元组中。
(a1,b1,c1)
(a2,b2,c2)
...
(an,bn,cn)
我想将每个元组序列化为一个文件,以便在另一台机器上(Linux => Windows,两者都是x86-64)读回Python。 有什么Pythonic的方法可以实现这一点吗?
我有一些numpy矩阵(确切地说是三维的),它们存储在元组中。
(a1,b1,c1)
(a2,b2,c2)
...
(an,bn,cn)
我想将每个元组序列化为一个文件,以便在另一台机器上(Linux => Windows,两者都是x86-64)读回Python。 有什么Pythonic的方法可以实现这一点吗?
numpy.savez或numpy.savez_compressed是一个不错的选择。我听说过,但从未经历过某些类型的数组无法很好地进行pickling。
我回想起这篇文章(似乎并不是什么大问题),以及关于numpy.void 无法pickling的一些内容。可能不是问题,但就在那里。
我通常使用 cPickle ,尽管我还没有与其他方法进行正式比较。此外,我总是将文件写为二进制并使用最高协议设置:
f = open('fname.pkl','wb')
cPickle.dump(array_tuple,f,-1)
f.close()
Pickle 可能会很好用
我还看到了这个:http://thsant.blogspot.com/2007/11/saving-numpy-arrays-which-is-fastest.html
shelve
, pickle
, cPickle
或 shove
。每个库都可以让你将大多数 Python 对象存储在文件中;shove
和 shelve
专注于类似字典的对象,它们将键映射到值,而 shove
则可以让你使用各种类似数据库的后端。如果你发现这些库的性能限制超出了你的需求,考虑使用数据库路线,例如通过 SQLAlchemy。pickle
或 shelve
开始。