0-D Numpy数组中的多个元素

时间:2013-04-18 15:35:03

标签: matlab numpy scipy

我正在Python 2.6中使用*.mat读取scipy.io.loadmat文件(不确定使用的Matlab版本),由于数组,我无法使用读取的数组尺寸。似乎无论如何我试图访问元素,我最终得到一个仍然有多个元素的0-d数组。我查看了thisthis,但仍然坚持如何使用这些元素。

假设我读了一个数组,

data = scipy.io.loadmat(filename,squeeze_me=False)
....
b = data[0][0]['somevar']

之后,我有

b=  [[ array([[ 1.0884988 ,  1.08116209,  1.07364911,  1.06662874,  1.06008637,
                1.0530468 ,  1.04619028,  1.03984295,  1.03342865,  1.02715746,
                1.02114066,  1.01496634,  1.00904967,  1.00316573,  0.99803184,
                0.99262961 ]])]]

现在,如果我尝试b.squeeze()b = b[0][0],我有

b=  [[ 1.0884988   1.08116209  1.07364911  1.06662874  1.06008637  
       1.0530468   1.04619028  1.03984295  1.03342865  1.02715746  
       1.02114066  1.01496634  1.00904967  1.00316573  0.99803184  
       0.99262961]]

这是一个0-d数组,自然最终会出现错误

IndexError: 0-d arrays can't be indexed

等,无法访问b的元素。

如何在不生成0-d数组的情况下访问最初从loadmat读取的数组元素,并且最好比使用多个[0]索引更优雅?感谢您提供任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

如果我像你展示的那样在Python提示符下键入b,我会得到一个结构,我可以通过b[0][0].squeeze()访问“真实”数组 - 无论内部数组是否来自array Python库或numpy.array。换句话说,对我有用。