Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x h5py:正确阅读a';表';类存储在MATLAB(.mat-7.3)中_Python 3.x_Matlab_Hdf5 - Fatal编程技术网

Python 3.x h5py:正确阅读a';表';类存储在MATLAB(.mat-7.3)中

Python 3.x h5py:正确阅读a';表';类存储在MATLAB(.mat-7.3)中,python-3.x,matlab,hdf5,Python 3.x,Matlab,Hdf5,我正在尝试使用h5py模块在Python3.8中导入一个MATLAB(.mat-7.3)文件。该文件包含结构类和表类。我成功导入了结构类对象。但是,table类在导入后显示了错误的维度 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()) 结果: ['#

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

    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']
f['LUT_Var'][()]

array([[3707764736,          2,          1,          1,          1,
                 1]], dtype=uint32)
LUT_Var是一个。尝试访问数据会导致以下结果:

['#refs#', '#subsystem#', 'LUT_Refl', 'LUT_Var']
f['LUT_Var'][()]

array([[3707764736,          2,          1,          1,          1,
                 1]], dtype=uint32)
然而,我期待一个表的大小:169560x12。当我从MATLAB将这个表导出为txt文件时,我可以在Python中导入它。我还可以在MATLAB中重新导入.mat文件,并且看不到任何数据损坏。有人知道这里可能缺少什么吗


谢谢。那个新来的家伙。我可以通过以下方式访问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))

@那个新来的家伙。我可以通过以下方式访问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))

MATLAB的h5库版本已经过时,人们甚至无法获得它。我建议用。谢谢,安德。我试过了。“出现了以下错误:NotImplementedError:请使用HDF reader for matlab v7.3文件”这导致我在这里发表了其他帖子->但我从未设法解决我的问题。同样,导入.mat的结构部分效果很好。我也遇到了同样的问题。顺便说一下,我的表数据得到了与您相同的精确数组(
数组([[3707764736,2,1,1,1,1]],dtype=uint32
)尽管有一个完全不同的表格。这一定是Matlab在HDF5格式中用来表示表格的标题。该表格的内容似乎在h5py中丢失了。Matlab的h5库版本太过时了,人们甚至无法获得它。我建议使用。谢谢,Ander。我尝试过了。“出现以下错误:NotImplementedError:Please use HDF reader for matlab v7.3文件”这导致我在这里发表了其他帖子->但我从未设法解决我的问题。同样,导入.mat的结构部分效果很好。我遇到了同样的问题。顺便说一句,我的表数据(
array)与您得到的数组完全相同([[3707764736,2,1,1,1]],dtype=uint32
),尽管有一个完全不同的表。这必须是Matlab在HDF5格式中用于表示表的标题。但该表的内容在h5py中似乎丢失了。