Легкий доступ к данным в матрицах Matlab, загруженных Scipy
Когда я загружаю в файл.mat файл scipy.io.loadmat, я получаю структуру данных, с которой трудно иметь дело, потому что я должен угадать, на каком уровне структуры содержатся данные. Numpy или scipy представление оборачивает все в глубокие списки. Печать обычно не помогает, потому что содержит много данных. Например:
from scipy.io import loadmat
mat = loadmat("data.mat")
val = mat["someattribute"] # not what I want, the data I can iterate over is one layer deeper (len(val) == 1)
val = mat["someattribute"][0] # len(val) is some big value
Есть ли какой-нибудь простой способ получить доступ к этим вещам, не беспокоясь об их представлении? Недавно я переключился с python 2.6.6 на 2.7.3 и заметил, что изменилось представление в библиотеках numpy/scipy (и, следовательно, мой код сломался).
1 ответ
Вы могли бы уйти с
val = mat['someattribute'].ravel()
который сгладит val
в 1D np.array
если вы знаете, что это 1D данные или
val = mat['someattribute'].squeeze()
который удалит все len=1
размеры (док)