亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Matlab 中保存矢量文件并在 Python 中放入數組

在 Matlab 中保存矢量文件并在 Python 中放入數組

元芳怎么了 2023-09-12 17:22:30
我在 Matlab 中保存了一個包含矢量信息的文件:x = [1 2 3 4 5 6 7 8 9 10]在此處輸入鏈接描述https://www.dropbox.com/s/lxq66hlo9p37ad2/test.mat?dl=0我如何在Python中讀取這個文件以獲得數組中相同的向量x?我試過這個:from scipy.io import loadmatx = scipy.io.loadmat('test.mat')print (x[0])但它似乎只是讀取文件而不放入數組。如果我print x[0]有一個錯誤。Traceback (most recent call last):  File "/home/mateus/Desktop/test.py", line 16, in <module>    print (x[0])KeyError: 0>>> 
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

當您在 MATLAB 中保存數據時,它保存到文件中的是包含所有變量的工作區。您可以限制保存哪些變量,但即使在這種情況下,它也會保存為包含指定變量的工作區。

這意味著,即使test.mat其中只有 MATLAB 中的變量“x”,當您test.mat在 python 中加載時x = scipy.io.loadmat('test.mat'),您也不會只得到“x”作為 NumPy 數組。如果你寫,print(type(x))你會發現它實際上是一本字典。這就是為什么你有一個KeyError例外。這本字典里沒有任何東西0作為鍵。

您需要在 MATLAB 中指定原始變量的名稱(在本例中也是“x”)才能獲取實際的數組。

那是,

x = scipy.io.loadmat('test.mat')
print(x["x"])

印刷

[[ 1  2  3  4  5  6  7  8  9 10]]

這是一個 2D NumPy 數組,表示一個行十列的矩陣。


最后一點,請記住 MATLAB 中的向量是“列向量”,這意味著它們的維度為1xn。畢竟 MATLAB 喜歡將一切都視為矩陣。在 NumPy 中,向量是實際的一維數組,但由于數據來自 MATLAB,因此當您在 Python 中加載數據時會得到一個二維數組。


查看完整回答
反對 回復 2023-09-12
  • 1 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號