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