【发布时间】:2011-03-02 00:26:15
【问题描述】:
我有几个存储在元组中的 numpy 矩阵(准确地说是 3 维)
(a1,b1,c1)
(a2,b2,c2)
...
(an,bn,cn)
我想将每个元组序列化为一个文件,该文件可以在另一台机器上读回 Python(Linux => Windows,两者都是 x86-64)。实现此目的的 Python 方法是什么?
【问题讨论】:
标签: python serialization numpy scipy
我有几个存储在元组中的 numpy 矩阵(准确地说是 3 维)
(a1,b1,c1)
(a2,b2,c2)
...
(an,bn,cn)
我想将每个元组序列化为一个文件,该文件可以在另一台机器上读回 Python(Linux => Windows,两者都是 x86-64)。实现此目的的 Python 方法是什么?
【问题讨论】:
标签: python serialization numpy scipy
numpy.savez 或 numpy.savez_compressed 是要走的路。我听说过,但从未遇到过某些类型的数组酸洗不好的问题。
我想起了 this 的帖子(似乎不是什么大问题)以及关于 numpy.void not pickling 的一些内容。可能不是问题,但确实存在。
【讨论】:
【讨论】:
使用shelve、pickle、cPickle 或shove。这些中的每一个都可以让您将大多数类型的 python 对象存储在一个文件中; shove 和 shelve 专注于将键映射到值的类字典对象,shove 将允许您使用各种类似数据库的后端。如果您发现自己超出了这些库的性能限制,请考虑走数据库路线,例如通过SQLAlchemy。
我已经使用了这些库中的每一个,并且它们在各自的领域中运行得相当好。我将从标准库pickle 或shelve 开始。
【讨论】:
我一般使用cPickle,虽然我没有和其他方法做正式的比较。此外,我总是将文件编写为二进制文件并使用最高协议设置:
f = open('fname.pkl','wb')
cPickle.dump(array_tuple,f,-1)
f.close()
【讨论】: