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]])
 }
変数名 "vec" を使用して、matlab データの配列のみを表示します。

例

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]
その他の拡張