在Matlab中保存一个矢量文件,并在Python中放入数组
我在Matlab中保存了一个包含矢量信息的文件:在Matlab中保存一个矢量文件,并在Python中放入数组,python,matlab,Python,Matlab,我在Matlab中保存了一个包含矢量信息的文件: x = [1 2 3 4 5 6 7 8 9 10] 如何在Python中读取此文件以获得数组中相同的向量x 我试过这个: from scipy.io import loadmat x = scipy.io.loadmat('test.mat') print (x[0]) 但它似乎只是读取文件,而不是放入数组。 如果我打印x[0]时出错 Traceback (most recent call last): File "/ho
x = [1 2 3 4 5 6 7 8 9 10]
如何在Python中读取此文件以获得数组中相同的向量x
我试过这个:
from scipy.io import loadmat
x = scipy.io.loadmat('test.mat')
print (x[0])
但它似乎只是读取文件,而不是放入数组。
如果我打印x[0]时出错
Traceback (most recent call last):
File "/home/mateus/Desktop/test.py", line 16, in <module>
print (x[0])
KeyError: 0
>>>
回溯(最近一次呼叫最后一次):
文件“/home/mateus/Desktop/test.py”,第16行,在
打印(x[0])
关键错误:0
>>>
在MATLAB中保存数据时,它保存到文件中的是包含所有变量的工作空间。您可以限制保存哪些变量,但即使在这种情况下,也会将其保存为包含指定变量的工作区
这意味着,即使test.mat
中只有来自MATLAB的变量“x”,当您使用x=scipy.io.loadmat('test.mat')
在python中加载test.mat
时,也不会只得到作为NumPy数组的“x”。如果你写print(type(x))
你会发现它实际上是一本字典。
这就是为什么会出现KeyError
异常。本词典中没有以0
为键的内容
您需要在MATLAB中指定原始变量的名称(在本例中也是“x”),以获得实际数组
就是
x=scipy.io.loadmat('test.mat'))
打印(x[“x”])
印刷品
[[ 1 2 3 4 5 6 7 8 9 10]]
它是一个2D NumPy数组,表示一行十列的矩阵
最后,请记住,MATLAB中的向量是“列向量”,这意味着它们具有维度
1xn
。毕竟,MATLAB喜欢把一切都当作矩阵。在NumPy中,向量是实际的1D数组,但由于数据来自MATLAB,因此在Python中加载数据时得到了2D数组。在MATLAB中保存数据时,它保存到文件中的是包含所有变量的工作空间。您可以限制保存哪些变量,但即使在这种情况下,也会将其保存为包含指定变量的工作区
这意味着,即使test.mat
中只有来自MATLAB的变量“x”,当您使用x=scipy.io.loadmat('test.mat')
在python中加载test.mat
时,也不会只得到作为NumPy数组的“x”。如果你写print(type(x))
你会发现它实际上是一本字典。
这就是为什么会出现KeyError
异常。本词典中没有以0
为键的内容
您需要在MATLAB中指定原始变量的名称(在本例中也是“x”),以获得实际数组
就是
x=scipy.io.loadmat('test.mat'))
打印(x[“x”])
印刷品
[[ 1 2 3 4 5 6 7 8 9 10]]
它是一个2D NumPy数组,表示一行十列的矩阵
最后,请记住,MATLAB中的向量是“列向量”,这意味着它们具有维度
1xn
。毕竟,MATLAB喜欢把一切都当作矩阵。在NumPy中,向量是实际的1D数组,但由于数据来自MATLAB,因此在Python中加载数据时得到了2D数组。您是否尝试过使用x=loadmat('test.mat')
?你能给我们看一下打印的内容吗?你把矢量保存为.mat
文件了吗?是的@马丁费弗里试过了,但没有成功@daviddurax
的打印格式是什么?您是否尝试过使用x=loadmat('test.mat')
?你能给我们看一下打印的内容吗?你把矢量保存为.mat
文件了吗?是的@马丁费弗里试过了,但没有成功@大卫杜拉x
的打印内容是什么?