SciPy Matlab配列

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]
Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です