2016-03-26 58 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.