Python 零维numpy.ndarray:唯一的元素是二维数组:如何访问它?
我使用scipy.io导入了一个Matlab*.mat文件,并试图从中提取2D数据。里面有几个阵列,当我试图获取它们时,我在最后一次操作中被卡住了 数据如下图所示。当我尝试为它编制索引时:索引器错误:数组的索引太多 我在谷歌上搜索到,它看起来像一个单值元组,其中唯一的元素是我的数组。原则上,这必须是可转位的,但它不起作用。类型(数据)返回 所以问题是:如何从这个数据结构中获取2D数组Python 零维numpy.ndarray:唯一的元素是二维数组:如何访问它?,python,arrays,matlab,numpy,Python,Arrays,Matlab,Numpy,我使用scipy.io导入了一个Matlab*.mat文件,并试图从中提取2D数据。里面有几个阵列,当我试图获取它们时,我在最后一次操作中被卡住了 数据如下图所示。当我尝试为它编制索引时:索引器错误:数组的索引太多 我在谷歌上搜索到,它看起来像一个单值元组,其中唯一的元素是我的数组。原则上,这必须是可转位的,但它不起作用。类型(数据)返回 所以问题是:如何从这个数据结构中获取2D数组 data[0] # Doesn't work. 经过一些巫毒编码后,我找到了一个有趣的方法来解决这个问
data[0] # Doesn't work.
经过一些巫毒编码后,我找到了一个有趣的方法来解决这个问题: 初始数据是零维的,其中唯一的元素是二维数组。显然,将该元素取出的方法是:
z = data.item()[()][0]
print(z)
最终结果如下:我得到了我的2D阵列:
在
loadmat
上搜索应该会产生许多问题,这些问题将帮助您区分此结果loadmat
必须将MATLAB对象转换为Python/numpy近似值
data = io.loadmat(filename)
应该生成一个包含一些封面键和各种数据键的字典<代码>列表(data.keys())来识别这些
x = data['x']
应匹配MATLAB工作区中的x
变量。它可以是一个2d、F阶阵列,对应于一个MATLAB矩阵
它可以是(n,m)对象数据类型数组,对应于一个MATLAB单元
它可以是一个结构化数组,其中字段名对应于MATLABstruct
属性
在您的情况下,看起来您有一个0d对象数据类型数组。形状是()
,一个空元组(1d有(n,)形状,2d有(n,m)形状,等等)。您可以使用以下方法从()数组中提取元素:
y[()]
y.item()
[()]
看起来很奇怪,但它是合乎逻辑的。对于一维数组,y[1]
可以写成y[(1,)]
。对于2d,y[1,2]
和y[(1,2)]
是相同的。索引元组应与维度数匹配。因此,()
可以索引()形状的数组。数组[0]
?如果不告诉我们您尝试了什么,很难说您的问题出在哪里。您能否添加一个示例来生成一个类似的矩阵,或者至少您是如何尝试检索数据的?如果执行my_array.shape,它会输出什么?如果我知道如何生成类似的矩阵,我就会知道答案。我已经找到了解决办法,一些巫毒编码,我会尽快回复。你是在告诉自己你自己的答案不起作用吗?