无法使用scipy.io或hdf5storage将mat文件加载到python中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用scipy.io或hdf5storage将mat文件加载到python中相关的知识,希望对你有一定的参考价值。

我已经尝试了几种方法将我的.mat文件加载到python中。我最终希望mat文件中的结构是一个numpy数组。我不知道如何最好地发布这个问题,因为我认为我可能需要上传我的.mat文件,因为它似乎存在问题,因为我尝试的步骤似乎适用于其他所有人。

首先,我试过:

 import scipy.io as sio
 mat_contents = sio.loadmat('filename.mat')

这给出了与我安装hdf5storage和h5py时相同的错误消息(如下所列)。我有matlab版本9.3。和python 3.5.3。

这也给出了如下错误信息:

  import hdf5storage
  mat = hdf5storage.loadmat('filename.mat')

这两次尝试的错误是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/u1/usr/.conda/envs/mypython/lib/python3.5/site-packages/hdf5storage/__init__.py", line 1801, in loadmat
    **keywords)
  File "/u1/usr/.conda/envs/mypython/lib/python3.5/site-packages/scipy/io/matlab/mio.py", line 135, in loadmat
    MR = mat_reader_factory(file_name, appendmat, **kwargs)
  File "/u1/usr/.conda/envs/mypython/lib/python3.5/site-packages/scipy/io/matlab/mio.py", line 59, in mat_reader_factory
    mjv, mnv = get_matfile_version(byte_stream)
  File "/u1/usr/.conda/envs/mypython/lib/python3.5/site-packages/scipy/io/matlab/miobase.py", line 235, in get_matfile_version
    maj_ind = int(tst_str[2] == b'I'[0])
IndexError: index out of range
>>> 

我的.mat文件包含一个结构1x1,它有几个不同大小的字段。我主要是一个python人,我只使用matlab输出我打算在python中分析的文件。

答案

@hpaulj谢谢,你的评论让我重新加载文件,因为我认为它已经被腐蚀了。我无法追踪它发生了什么,但这个问题的解决方案是检查文件。问题上面列出的步骤是正确的。 (我是Stackoverflow的新手,我很确定你不能接受评论作为答案,所以希望你能在这里获得荣誉,因为我标记了你的名字?)

以上是关于无法使用scipy.io或hdf5storage将mat文件加载到python中的主要内容,如果未能解决你的问题,请参考以下文章

无法导入 scipy 的 io

scipy.io.loadmat 嵌套结构(即字典)

Python 到 MATLAB:使用 scipy.io 导出字符串列表

使用 scipy.io loadmat 将 Matlab 结构导入 python 时的值错误

从使用 Scipy.io.loadmat 加载的 .mat 文件访问数组内容 - python

使用 scipy.io.loadmat 在 python 中加载 matlab 表