1 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個贊
當(dāng)您在 MATLAB 中保存數(shù)據(jù)時,它保存到文件中的是包含所有變量的工作區(qū)。您可以限制保存哪些變量,但即使在這種情況下,它也會保存為包含指定變量的工作區(qū)。
這意味著,即使test.mat
其中只有 MATLAB 中的變量“x”,當(dāng)您test.mat
在 python 中加載時x = scipy.io.loadmat('test.mat')
,您也不會只得到“x”作為 NumPy 數(shù)組。如果你寫,print(type(x))
你會發(fā)現(xiàn)它實(shí)際上是一本字典。這就是為什么你有一個KeyError
例外。這本字典里沒有任何東西0
作為鍵。
您需要在 MATLAB 中指定原始變量的名稱(在本例中也是“x”)才能獲取實(shí)際的數(shù)組。
那是,
x = scipy.io.loadmat('test.mat') print(x["x"])
印刷
[[ 1 2 3 4 5 6 7 8 9 10]]
這是一個 2D NumPy 數(shù)組,表示一個行十列的矩陣。
最后一點(diǎn),請記住 MATLAB 中的向量是“列向量”,這意味著它們的維度為1xn
。畢竟 MATLAB 喜歡將一切都視為矩陣。在 NumPy 中,向量是實(shí)際的一維數(shù)組,但由于數(shù)據(jù)來自 MATLAB,因此當(dāng)您在 Python 中加載數(shù)據(jù)時會得到一個二維數(shù)組。
添加回答
舉報(bào)