我有几个存储在元组中的numpy矩阵(确切地说是3维)
(a1,b1,c1)
(a2,b2,c2)
...
(an,bn,cn)
我想将每个元组序列化为一个文件,可以在另一台机器上读回Python(Linux => Windows,两者都是x86-64)。什么是pythonic方法来实现这一目标?
答案 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)
使用shelve
,pickle
,cPickle
或shove
。每个都可以让你将大多数类型的python对象存储在一个文件中; shove
和shelve
专注于将键映射到值的类字典对象,shove
将允许您使用各种类似数据库的后端。如果您发现自己超出了这些库的性能限制,请考虑使用数据库路由,例如:通过SQLAlchemy。
我已经使用了这些库中的每一个,并且它们在自己的利基中工作得相当好。我从pickle
或shelve
开始,它们是标准库。
答案 3 :(得分:1)
我通常使用cPickle
,虽然我还没有与其他方法进行过正式比较。另外,我总是把文件写成二进制文件并使用最高协议设置:
f = open('fname.pkl','wb')
cPickle.dump(array_tuple,f,-1)
f.close()