NumPyは、Pythonで読み取り可能な形式でデータを保存するメソッドを提供します。
SciPyは、Matlabと対話するメソッドを提供します。
SciPyのscipy.ioモジュールは、Matlab配列を処理するための多くの関数を提供します。
Matlab形式でデータをエクスポートする
savemat()
メソッドは、Matlab形式でデータをエクスポートできます。
このメソッドのパラメータは次のとおりです。
filename
– データを保存するファイルのファイル名。mdict
– データを含む辞書。do_compression
– ブール値。結果データを圧縮するかどうかを指定します。デフォルトはFalseです。
配列を変数「vec」としてmatファイルにエクスポートします。
実例
from scipy import io
import numpy as np
arr = np.arange(10)
io.savemat('arr.mat', {"vec": arr})
ヒント:上記のコードは、「arr.mat」という名前のファイルを端末に保存します。
Matlab形式でデータをインポートする
loadmat() メソッドは、Matlab形式でデータをインポートできます。
このメソッドのパラメータは次のとおりです。
filename
– データを保存するファイルのファイル名。
キーが変数名で、対応する値が変数値である構造化配列を返します。
次の実例では、matファイルから配列をインポートします。
実例
from scipy import io
import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,])
# エクスポート
io.savemat('arr.mat', {"vec": arr})
# インポート
mydata = io.loadmat('arr.mat')
print(mydata)
出力結果は次のとおりです。
{
'__header__': b'MATLAB 5.0 MAT-file Platform: nt, Created on: Tue Sep 22 13:12:32 2020',
'__version__': '1.0',
'__globals__': [],
'vec': array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
}
matlabデータの配列のみを表示するには、変数名「vec」を使用します。
実例
from scipy import io
import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,])
# エクスポート
io.savemat('arr.mat', {"vec": arr})
# インポート
mydata = io.loadmat('arr.mat')
print(mydata['vec'])
出力結果は次のとおりです。
[[0 1 2 3 4 5 6 7 8 9]]
出力結果から見ると、配列は元々1次元でしたが、抽出すると1次元増加して2次元配列になっていることがわかります。
この問題を解決するには、パラメータsqueeze_me=Trueを渡すことができます。
実例
from scipy import io
import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,])
# エクスポート
io.savemat('arr.mat', {"vec": arr})
# インポート
mydata = io.loadmat('arr.mat', squeeze_me=True)
print(mydata['vec'])
出力結果は次のとおりです。
[0 1 2 3 4 5 6 7 8 9]
コメントを残す