我在 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 回答
![?](http://img1.sycdn.imooc.com/5333a0780001a6e702200220-100-100.jpg)
蝴蝶不菲
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 中加载数据时会得到一个二维数组。
添加回答
举报
0/150
提交
取消