1

我正在*.mat使用 Python 2.6 读取文件(不确定使用的 Matlab 版本),scipy.io.loadmat由于数组尺寸,我无法使用读取的数组。似乎无论我尝试访问这些元素,我最终都会得到一个仍然有多个元素的 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()or 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.

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

4

1 回答 1

0

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

于 2013-04-18T20:14:08.523 回答