序列化numpy数组的元组

时间:2011-03-02 00:26:16

标签: python serialization numpy scipy

我有几个存储在元组中的numpy矩阵(确切地说是3维)

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

我想将每个元组序列化为一个文件,可以在另一台机器上读回Python(Linux => Windows,两者都是x86-64)。什么是pythonic方法来实现这一目标?

4 个答案:

答案 0 :(得分:6)

numpy.savez或numpy.savez_compressed是要走的路。我听说过,但从来没有遇到某些类型的数据不能很好地腌制的问题。

我回忆起this帖子(似乎没有太多问题)以及关于numpy.void not pickling的内容。可能不是问题,但确实如此。

答案 1 :(得分:1)

Pickle可能会运作良好

我也看到了这一点:http://thsant.blogspot.com/2007/11/saving-numpy-arrays-which-is-fastest.html

答案 2 :(得分:1)

使用shelvepicklecPickleshove。每个都可以让你将大多数类型的python对象存储在一个文件中; shoveshelve专注于将键映射到值的类字典对象,shove将允许您使用各种类似数据库的后端。如果您发现自己超出了这些库的性能限制,请考虑使用数据库路由,例如:通过SQLAlchemy

我已经使用了这些库中的每一个,并且它们在自己的利基中工作得相当好。我从pickleshelve开始,它们是标准库。

答案 3 :(得分:1)

我通常使用cPickle,虽然我还没有与其他方法进行过正式比较。另外,我总是把文件写成二进制文件并使用最高协议设置:

f = open('fname.pkl','wb')
cPickle.dump(array_tuple,f,-1)
f.close()