SciPy Matlab 陣列
使用 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 格式匯入資料”示例。
從 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 資料中的陣列
注意:我們可以看到陣列最初是 1D 的,但在提取時它的維度增加了一維。
為了解決這個問題,我們可以傳遞一個附加引數 squeeze_me=True
。
示例
# 匯入
mydata = io.loadmat('arr.mat', squeeze_me=True)
print(mydata['vec'])
結果
[0 1 2 3 4 5 6 7 8 9]自己動手試一試 »