是否可以在Python中读取二进制MATLAB .mat文件?
我看到SciPy声称支持读取.mat文件,但我没有成功。我安装了SciPy 0.7.0版本,但找不到loadmat()方法。
是否可以在Python中读取二进制MATLAB .mat文件?
我看到SciPy声称支持读取.mat文件,但我没有成功。我安装了SciPy 0.7.0版本,但找不到loadmat()方法。
当前回答
将mat文件读入混合数据类型的pandas dataFrame
import scipy.io as sio
mat=sio.loadmat('file.mat')# load mat-file
mdata = mat['myVar'] # variable in mat file
ndata = {n: mdata[n][0,0] for n in mdata.dtype.names}
Columns = [n for n, v in ndata.items() if v.size == 1]
d=dict((c, ndata[c][0]) for c in Columns)
df=pd.DataFrame.from_dict(d)
display(df)
其他回答
有一个很好的包叫做mat4py,可以很容易地安装使用
pip install mat4py
使用起来很简单(来自网站):
从mat文件加载数据
函数loadmat只使用Python的dict和list对象,将mat文件中存储的所有变量加载到一个简单的Python数据结构中。数值数组和单元格数组转换为行顺序的嵌套列表。压缩数组以消除只有一个元素的数组。生成的数据结构由与JSON格式兼容的简单类型组成。
示例:将mat文件加载到Python数据结构中:
from mat4py import loadmat
data = loadmat('datafile.mat')
变量数据是mat文件中包含变量和值的字典。
将Python数据结构保存到mat文件中
使用savemat函数,可以将Python数据保存到mat文件中。数据必须以与loadmat相同的方式结构化,即它应该由简单的数据类型组成,如dict, list, str, int和float。
示例:将Python数据结构保存到mat文件中:
from mat4py import savemat
savemat('datafile.mat', data)
参数数据应与变量一致。
也可以使用hdf5storage库。关于matlab版本支持的详细信息,这里是官方文档。
import hdf5storage
label_file = "./LabelTrain.mat"
out = hdf5storage.loadmat(label_file)
print(type(out)) # <class 'dict'>
需要导入,导入scipy.io…
import scipy.io
mat = scipy.io.loadmat('file.mat')
有一个用于此任务的很棒的库:pymatreader。
按照下面的步骤做:
安装包:pip Install pymatreader 导入此包的相关函数:from pymatreader Import read_mat 使用函数读取matlab结构:data = read_mat('matlab_struct.mat') 使用data.keys()来定位数据实际存储的位置。
钥匙通常会像:dict_keys([‘__header__’,‘__version__’,‘__globals__’,' data_opp '])。其中data_opp将是存储数据的实际键。当然,这个键的名称可以在不同的文件之间更改。
最后一步-创建你的数据帧:my_df = pd.DataFrame(data['data_opp'])
就是这样:)
首先将.mat文件保存为:
save('test.mat', '-v7')
之后,在Python中,使用常用的loadmat函数:
import scipy.io as sio
test = sio.loadmat('test.mat')