【发布时间】:2018-10-21 13:39:49
【问题描述】:
全部,
我尝试从 python 导入和读取 .mat 文件。我尝试了两种方法,但都不成功:
方法一: 在python中:
import scipy.io as sio
mat = sio.loadmat('path/tmpPBworkspace.mat')
我收到类似于以下内容的消息:
{'None': MatlabOpaque([ (b'rateQualityOutTrim', b'MCOS', b'dataset', array([[3707764736],
[ 2],
[ 1],
[ 1],
[ 1],
[ 1]], dtype=uint32))],
dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')]),
'__function_workspace__': array([[ 0, 1, 73, ..., 0, 0, 0]], dtype=uint8),
'__globals__': [],
'__header__': b'MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Thu May 10 07:11:52 2018',
'__version__': '1.0'}
我不确定那里出了什么问题?我希望看到一个数据框
还要补充一点,在方法 1 中,我已将 .mat 保存在与 scipy 兼容的版本中
在 Matlab 中
save('path/tmpPBworkspace.mat','rateQualityOutTrim','-v7')
也尝试了另一种方式:
方法二:h5py
在 Matlab 中:
save('path/tmpPBworkspaceH5.mat','rateQualityOutTrim','-v7.3')
在 Python 中:
import numpy as np
import h5py
f = h5py.File('/GAAR/ustr/projects/PBF/tmpPBworkspaceH5.mat','r')
data = f.get('rateQualityOutTrim/date')
data = np.array(data)
我明白了
f
Out[154]: <HDF5 file "tmpPBworkspaceH5.mat" (mode r)>
data
array(None, dtype=object)
数组为空。不知道如何在这里访问数据
谢谢
【问题讨论】:
-
不透明项是一个matlab类对象,它不能变成一个numpy数组。
-
感谢 hpaulj 关于如何阅读 .mat 的任何想法?
-
什么是matlab对象?
-
什么意思?
-
我不关心 MATLAB 中的数据集,也不关心它们是否与
pandas兼容。但是要使用loadmat加载变量,您必须编写矩阵、单元格或结构体。
标签: python-3.x pandas numpy dataframe scipy