我正在Python 2.6中使用*.mat
读取scipy.io.loadmat
文件(不确定使用的Matlab版本),由于数组,我无法使用读取的数组尺寸。似乎无论如何我试图访问元素,我最终得到一个仍然有多个元素的0-d数组。我查看了this和this,但仍然坚持如何使用这些元素。
假设我读了一个数组,
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]
索引更优雅?感谢您提供任何帮助或建议。
答案 0 :(得分:0)
如果我像你展示的那样在Python提示符下键入b,我会得到一个结构,我可以通过b[0][0].squeeze()
访问“真实”数组 - 无论内部数组是否来自array
Python库或numpy.array
。换句话说,对我有用。