我已经使用scipy.io导入了Matlab * .mat文件,并尝试从中提取2D数据。里面有几个数组,当我尝试获取它们时,我陷入了最后的操作。
数据如下图所示。当我尝试建立索引时: IndexError:数组的索引过多
我已经搜索到它看起来像一个单值元组,其中唯一的元素是我的数组。原则上,这必须是可索引的,但不起作用。 type(data)返回<< em> class'numpy.ndarray'>
问题是:如何从这种数据结构中提取2D阵列?
data[0] # Doesn't work.
答案 0 :(得分:2)
在loadmat
上进行搜索应该会产生许多SO问题,这些问题将有助于您分清结果。 loadmat
必须将MATLAB对象转换为Python / numpy近似值。
data = io.loadmat(filename)
应生成带有一些封面键和各种数据键的字典。 list(data.keys())
来识别那些人。
x = data['x']
应与MATLAB工作区中的x
变量匹配。可以是二维的F数组,对应于MATLAB矩阵。
可能是(n,m)个对象dtype数组,对应于MATLAB单元格。
它可以是结构化的数组,其中字段名称对应于MATLAB struct
属性。
在您的情况下,看起来您有一个0d对象dtype数组。形状为()
,一个空的元组(1d具有(n,)形状,2d具有(n,m)形状,等等)。您可以使用以下方法将元素从()数组中拉出:
y[()]
y.item()
[()]
看起来很奇怪,但这是合乎逻辑的。对于一维数组,y[1]
可以写为y[(1,)]
。对于2d,y[1,2]
和y[(1,2)]
是相同的。标引元组应与维数匹配。因此()
可以索引一个()形状数组。
答案 1 :(得分:-1)