最近在进行学习深度学习过程中,遇到了以MATLAB的
.mat
格式存储的数据,需要用python读取出来处理,于是就找到了以下比较方便的三种python读取mat文件的方法:
使用hdf5库来读取mat文件
1. 使用scipy.io来读取
-如果你的matlab的版本比较旧,保存的
.mat
格式为‘-v7.3’
以前的版本,可以采用scipy.io
。
pip install scipy #安装scipy库
import scipy.io as sio
#这里‘data1.mat’是相对文件路径
boxes = sio.loadmat(’name_box.mat‘)['box'].ravel()
1.5 知识小插曲
在开始下面之前,先来了解下:
MATLAB v7.3
引入了对HDF5
文件格式的支持,这是一种用于存储和组织大量数据的高效、可扩展的格式。HDF5
是"Hierarchical Data Format"
的第五版,它支持多种数据类型、复杂的数据 structures,并且可以高效地处理大量数据。
MATLAB v7.3 及以后版本支持的
HDF5
格式提供了一种灵活、高效的数据存储解决方案,可以在 MATLAB 以及其他编程环境中使用相应的工具进行读取和处理。
接下来我们便进入如何读取
MATLAB v7.3
及以后版本支持的HDF5
格式的mat文件环节
2. 使用hdf5来读取
MATLAB v7.3
及以后版本创建的.mat
文件,由于scipy.io
不支持,根据以上所述,此处采用hdf5
对于处理非MATLAB .mat格式的HDF5文件,h5py也可以创建、读取和修改HDF5文件。具体可见Python处理HDF5文件:h5py库
pip install h5py #安装h5py库
import h5py
import numpy as np
train_nor = h5py.File("../Training/train_nor.mat", "r")
# matlab中load出来的变量名为'train_naf'
# 也可以通过下面代码来查看
# print(train_nor.keys())
data_nor = np.array(train_nor['train_naf']).transpose()
# print(data_nor.shape)
train_af = h5py.File("../Training/train_af.mat", "r")
data_af = np.array(train_af['train_af']).transpose()
# print(data_af.shape)
3. 使用mat73来读取
除了可以使用上面的
hdf5
库来读取MATLAB v7.3
及以后版本创建的.mat
文件,也可以使用mat73
库读取。
pip install mat73 #安装mat73库
import mat73
path = r"./ECG_dimensions/Training/train_af.mat"
data = mat73.loadmat(path)
print(data.keys()) # 查看data的key值
print(data)
参考: