% save .mat file in the matlab
train_set_x=1:50*1*51*61*23;
train_set_x=reshape(train_set_x,[50,1,51,61,23]);
save(['pythonTest.mat'],'train_set_x','-v7.3');
Данные, полученные в Matlab, имеют размер (50,1,51,61,23).
Я загружаю файл .mat в Python с помощью инструкции по этой ссылке.
Код выглядит следующим образом:
import numpy as np, h5py
f = h5py.File('pythonTest.mat', 'r')
train_set_x = f.get('train_set_x')
train_set_x = np.array(train_set_x)
Результат train_set_x.shape - (23L, 61L, 51L, 1L, 50L)
. Ожидается, что это будет (50L, 1L, 51L, 61L, 23L)
. Так что я изменил форму на
train_set_x=np.transpose(train_set_x, (4,3,2,1,0))
Мне интересно узнать об изменении формы данных между Python и Matlab. В моем коде есть ошибки?
.mat
scipy.io.loadmat
создает массивы той же формы, что и MATLAB, ноorder='F'
. Таким образом, это как бы скрывает эту разницу. - person hpaulj   schedule 01.09.2016save
принимает вариант версии.V7
и ранее используют собственный формат файла MATLAB, а неhdf5
.loadmat
этим занимается. При необходимости я могу опубликовать пример Octave / numpy. - person hpaulj   schedule 01.09.2016