2016-03-26 61 views
0

我来自Matlab背景,最近开始使用Python进行编码。我使用Monte Carlo生成大量数据,这些数据有时是10维数组。在Matlab中,我一直使用.mat文件格式来存储这些数组,以及使用struct的输入和其他参数。Python保存大型模拟

Python的推荐存储或等效物是什么?

+1

从MATLAB的家伙来了,你仍然可以保存/加载MAT-使用SciPy的Python文件:http://docs.scipy.org/doc/scipy/reference/generated/scipy.io.savemat.html :) – Amro

回答

2

python中的标准对象序列化是pickle。从文档

“酸洗”是过程,由此Python对象层次 转换成字节流,而“取储存”是逆 操作,由此一个字节流(从二进制文件或bytes-如 对象)被转换回对象层次结构。

一个例子是

import pickle 
mydata = [1, 2, 3, 5] 
pickle.dump(mydata, open("mydata.p", "wb")) 
mydata2 = pickle.load(open("mydata.p", "rb")) 

另一种方法是使用类似h5py这是用于将数据写入到HDF5格式的第三方模块。根据您的应用程序,这可能是一个更高性能的解决方案,因为HDF5的设计考虑了大量数值数据。实际上,最新的.mat文件实际上是在hdf5文件source之上设计的。

1

你可以与咸菜库或cplicke为(蟒蛇2.x的)Python中使用的序列化对象,

https://docs.python.org/2/library/pickle.html 例如: 如果你想保存为文件

import pickle 
filetocreate = open('newfile.txt','w') 
pickle.dump(arrayxD, filetocreate, -1) 

然后使用就可以使用

pickle.load(file) 

- #使用可用的最高协议腌制列表。 = -1 - #如果没有= 0

参见: pickle.HIGHEST_PROTOCOL

An integer, the highest protocol version available. This value can be passed as a protocol value to functions dump() and dumps() as well as the Pickler constructor. 

pickle.DEFAULT_PROTOCOL

An integer, the default protocol version used for pickling. May be less than HIGHEST_PROTOCOL. Currently the default protocol is 3, a new protocol designed for Python 3.