H5py:正确读取存储在MatLab(.mat-7.3)中的表类的问题 [英] h5py: Issues to correctly read a 'table' class stored in MATLAB (.mat -7.3)

查看:0
本文介绍了H5py:正确读取存储在MatLab(.mat-7.3)中的表类的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用h5py模块在Python3.8中导入一个MATLAB(.mat-7.3)文件。该文件包含结构类和类。我成功导入了结构类对象。但是,类在导入后显示了错误的维度。

    import h5py
    
    Path='data/LUT_0/LUT_0.mat' #path file path to be read
    f = h5py.File(Path, mode='r') #read mat file

    list(f.keys())

结果:

['#refs#', '#subsystem#', 'LUT_Refl', 'LUT_Var']
LUT_Var是HDF5数据集<;LUT_Var&q;:Shape(1,6),类型&q;&q;>;。尝试访问数据的结果为:

f['LUT_Var'][()]

array([[3707764736,          2,          1,          1,          1,
                 1]], dtype=uint32)

然而,我期待的是一张大小为:169560x12的桌子。当我将这个表导出为一个来自matlab的txt文件时,我可以在Python中导入它。我还可以在MATLAB中重新导入.mat文件,并且没有看到任何数据损坏。有人知道这里可能遗漏了什么吗?

谢谢。

推荐答案

@ThatNewGuy。我可以这样访问MatLab文件的内容:

import h5py
import numpy as np
import pandas as pd

f = h5py.File(matloc, 'r') # matloc = path to your .mat
print(list(f))

re = f.get('LUT_Refl/Full')
w = f.get('LUT_Refl/WL')

data = pd.DataFrame(np.array(re)).transpose()  # For converting to a NumPy array
wl = pd.DataFrame(np.array(w))

这篇关于H5py:正确读取存储在MatLab(.mat-7.3)中的表类的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆