python-3.x - 使用python打开.mat(matlab数据)

标签 python-3.x pandas numpy dataframe scipy

全部,

我试图从 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)

数组为空。不知道我如何也可以访问这里的数据

谢谢

最佳答案

您可以使用 scipy.io.loadmat 为了这:

from scipy import io

loaded = io.loadmat('/GAAR/ustr/projects/PBF/tmpPBworkspaceH5.mat')
loaded将是一个将名称映射到数组的字典。

但是,如果您同时控制 Matlab 部分和 Pandas 部分,则使用 csvwrite 会容易得多。 :

在 Matlab 中:
csvwrite('path/tmpPBworkspaceH5.csv','rateQualityOutTrim')

在 Python 中:
pd.read_csv('tmpPBworkspaceH5.csv')

关于python-3.x - 使用python打开.mat(matlab数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50287212/

相关文章:

python-3.x - 如何使用比较多个数据帧并使用 Pandas 返回匹配项

python - 如何收集文件中关键字之间的所有数据行 - 从换行符开始+结束

python - 根据另一个数据框中的值从数据框中选择行,并根据第二个数据框中的值更新其中一列

python - 使用 unravel_index 查找最大数字的索引

python - 将不同大小的numpy数组组合成一个更大的矩阵

python - 在 Fedora 24 上的 Python3 中使用 `cairo.Region` 时出现段错误

python - Pandas csv错误 'TextFileReader'对象没有属性 'to_html'

python-3.x - Pandas 中的read_table和read_csv之间有区别吗?

python - 将数据从一个 Numpy 数组移动到另一个返回错误数据

Python:我们如何匹配回归模型的预测值和真值