我找到了 2 种方式:scipy 或 mat4py。
- mat4py
从 MAT 文件中加载数据
函数 loadmat 将存储在 MAT 文件中的所有变量加载到
简单的 Python 数据结构,仅使用 Python 的 dict 和 list
对象。数值和元胞数组转换为按行排序的嵌套
列表。数组被压缩以消除只有一个元素的数组。
生成的数据结构由简单类型组成,它们是
兼容 JSON 格式。
示例:将 MAT 文件加载到 Python 数据结构中:
data = loadmat('datafile.mat')
发件人:
https://pypi.python.org/pypi/mat4py/0.1.0
- Scipy:
例子:
import numpy as np
from scipy.io import loadmat # this is the SciPy module that loads mat-files
import matplotlib.pyplot as plt
from datetime import datetime, date, time
import pandas as pd
mat = loadmat('measured_data.mat') # load mat-file
mdata = mat['measuredData'] # variable in mat file
mdtype = mdata.dtype # dtypes of structures are "unsized objects"
# * SciPy reads in structures as structured NumPy arrays of dtype object
# * The size of the array is the size of the structure array, not the number
# elements in any particular field. The shape defaults to 2-dimensional.
# * For convenience make a dictionary of the data using the names from dtypes
# * Since the structure has only one element, but is 2-D, index it at [0, 0]
ndata = {n: mdata[n][0, 0] for n in mdtype.names}
# Reconstruct the columns of the data table from just the time series
# Use the number of intervals to test if a field is a column or metadata
columns = [n for n, v in ndata.iteritems() if v.size == ndata['numIntervals']]
# now make a data frame, setting the time stamps as the index
df = pd.DataFrame(np.concatenate([ndata[c] for c in columns], axis=1),
index=[datetime(*ts) for ts in ndata['timestamps']],
columns=columns)
发件人:
http://poquitopicante.blogspot.fr/2014/05/loading-matlab-mat-file-into-pandas.html
- 最后你可以使用 PyHogs 但仍然使用 scipy:
读取复杂的.mat 文件。
此笔记本显示了读取 Matlab .mat 文件的示例,
将数据转换为带有循环的可用字典,一个简单的绘图
数据。
http://pyhogs.github.io/reading-mat-files.html