Python 序列化numpy数组的元组

Python 序列化numpy数组的元组,python,serialization,numpy,scipy,Python,Serialization,Numpy,Scipy,我有两个numpy矩阵(确切地说是三维的),它们存储在元组中 (a1,b1,c1) (a2,b2,c2) ... (an,bn,cn) 我想将每个元组序列化到一个文件中,该文件可以在另一台机器(Linux=>Windows,都是x86-64)上读回Python。要做到这一点,什么是蟒蛇式的方法?泡菜可能很管用 我也看到了这一点:使用、或。其中每一个都可以让您在一个文件中存储大多数种类的python对象show和shelve重点关注将键映射到值的类似字典的对象,而show将允许您使用各种类似数据

我有两个numpy矩阵(确切地说是三维的),它们存储在元组中

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

我想将每个元组序列化到一个文件中,该文件可以在另一台机器(Linux=>Windows,都是x86-64)上读回Python。要做到这一点,什么是蟒蛇式的方法?

泡菜可能很管用

我也看到了这一点:

使用、或。其中每一个都可以让您在一个文件中存储大多数种类的python对象
show
shelve
重点关注将键映射到值的类似字典的对象,而
show
将允许您使用各种类似数据库的后端。如果发现自己超出了这些库的性能限制,请考虑数据库路径,例如通过.

我使用过这些库中的每一个,它们在各自的利基中工作得相当好。我从标准库
pickle
shelve
开始

或numpy.savez_compressed是一种方式。我听说过,但从未遇到过某些类型的阵列酸洗不好的问题


我在回忆这篇文章(似乎不是什么大问题)以及一些关于numpy.void的东西。可能不是问题,但确实存在。

我通常使用
cPickle
,尽管我没有与其他方法进行正式比较。此外,我总是将文件写入二进制文件,并使用最高协议设置:

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

这个链接说Scipy.io在空间和时间上都提供了最好的性能,不是吗?是的-如果不考虑这些因素,pickle可能不会那么麻烦。我还想补充一点,np.savez似乎与Scipy.io.savemat做得一样好。savemat的好处是它可以很好地使用MATLAB.mat文件。