2016-05-13 9 views
0

scipyファンクションsavematを使用して、複数のndarrayを1つのmatファイルに保存するにはどうすればよいですか?私は二つの行列がABを呼び出している場合疑問、続くように私は1 result.matにそれらの両方を保存することができます:マットファイルの個々の内容に複数のndarrayを保存する - scipy

sio.savemat('result.mat', {'A':A}) 
sio.savemat('result.mat', {'B':B}) 

私は行列Bを見つけることがMATLABでresult.matオープン、その後それをしたと... Aが得ました上書きする。どんな助け?

+0

各呼び出しは、以前に作成されたファイルを置き換える新しい書き込みモードでファイルを開きます。これは通常のPythonファイル書き込みの習慣です。しかし、 'savemat'は既に開いているファイルを受け入れます。ファイルを書き込みモードで開き、その両方で 'savemat'を呼び出します。 – hpaulj

答えて

2
In [436]: with open('test.mat','wb') as f: # need 'wb' in Python3 
    savemat(f, {'A':np.arange(10)}) 
    savemat(f, {'B':np.ones((3,3))}) 
    .....:  

In [437]: loadmat('test.mat') 
Out[437]: 
{'A': array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]), 
'__version__': '1.0', 
'B': array([[ 1., 1., 1.], 
     [ 1., 1., 1.], 
     [ 1., 1., 1.]]), 
'__globals__': [], 
'__header__': b'MATLAB 5.0 MAT-file Platform: posix, Created on: Fri May 13 16:38:04 2016'} 
関連する問題