使用MATLAB处理数据,再在Python中导入mat文件。

通常可以直接使用scipy.io里的loadmat模块来导入mat文件,导入后的mat文件是一个cell,例子如下:

import scipy.io as sio

data_train = sio.loadmat(datapath)
data_train_data = data_train.get('data') #取出字典中的data
data_train_label = data_train.get('label') #取出字典中的label

如果使用loadmat,那么需要用get方法从cell中取出data和label赋值到变量中。

如果数据量很大,则MATLAB在保存时只能够使用’-v7.3’命令,保存为7.3以上格式的文件,而scipy.io是无法读取7.3版本的mat文件的,这时候就需要使用h5py了。
例子如下:

import h5py

test = h5py.File('./training_data_CNN.mat') #读取mat文件
label = test['Label_input'][:] #取出mat文件中的数据,Label_input为mat里的元胞数组的名称,若有多级元包目录,可以用'/'分开进行读取。例如'cell_name1/cell_name2/Label_input'

print(label[1])

值得提醒的是,MATLAB和Python在数组上写入的顺序是不一样的,所以如果要保持mat文件和Python中的数组维度相同,需要在mat最终导出前使用permute函数进行N维数组的重新排列。