Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 零维numpy.ndarray:唯一的元素是二维数组:如何访问它?_Python_Arrays_Matlab_Numpy - Fatal编程技术网

Python 零维numpy.ndarray:唯一的元素是二维数组:如何访问它?

Python 零维numpy.ndarray:唯一的元素是二维数组:如何访问它?,python,arrays,matlab,numpy,Python,Arrays,Matlab,Numpy,我使用scipy.io导入了一个Matlab*.mat文件,并试图从中提取2D数据。里面有几个阵列,当我试图获取它们时,我在最后一次操作中被卡住了 数据如下图所示。当我尝试为它编制索引时:索引器错误:数组的索引太多 我在谷歌上搜索到,它看起来像一个单值元组,其中唯一的元素是我的数组。原则上,这必须是可转位的,但它不起作用。类型(数据)返回 所以问题是:如何从这个数据结构中获取2D数组 data[0] # Doesn't work. 经过一些巫毒编码后,我找到了一个有趣的方法来解决这个问

我使用scipy.io导入了一个Matlab*.mat文件,并试图从中提取2D数据。里面有几个阵列,当我试图获取它们时,我在最后一次操作中被卡住了

数据如下图所示。当我尝试为它编制索引时:索引器错误:数组的索引太多

我在谷歌上搜索到,它看起来像一个单值元组,其中唯一的元素是我的数组。原则上,这必须是可转位的,但它不起作用。类型(数据)返回

所以问题是:如何从这个数据结构中获取2D数组

    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单元

它可以是一个结构化数组,其中字段名对应于MATLAB
struct
属性

在您的情况下,看起来您有一个0d对象数据类型数组。形状是
()
,一个空元组(1d有(n,)形状,2d有(n,m)形状,等等)。您可以使用以下方法从()数组中提取元素:

 y[()]
 y.item()

[()]
看起来很奇怪,但它是合乎逻辑的。对于一维数组,
y[1]
可以写成
y[(1,)]
。对于2d,
y[1,2]
y[(1,2)]
是相同的。索引元组应与维度数匹配。因此,
()
可以索引()形状的数组。

数组[0]
?如果不告诉我们您尝试了什么,很难说您的问题出在哪里。您能否添加一个示例来生成一个类似的矩阵,或者至少您是如何尝试检索数据的?如果执行my_array.shape,它会输出什么?如果我知道如何生成类似的矩阵,我就会知道答案。我已经找到了解决办法,一些巫毒编码,我会尽快回复。你是在告诉自己你自己的答案不起作用吗?