*.mat
Python 2.6 でファイル (使用された Matlab のバージョンがわからない) を読み込んでいますが、配列の次元が原因で読み込んだscipy.io.loadmat
配列を操作できません。要素にアクセスしようとしても、複数の要素を持つ 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次元配列であり、当然エラーになります
IndexError: 0-d arrays can't be indexed
の要素にアクセスできませんb
。
0-d 配列を生成せずに、できれば複数のインデックスloadmat
を使用するよりもエレガントに、最初に読み取った配列の要素にアクセスするにはどうすればよいですか? [0]
助けや提案をありがとう。