如何使用hd5f访问*.mat文件中的嵌套结构?

2024-04-18 16:59:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试访问matlab文件(*.mat)的以下结构:

parent matlab structure

其中包含以下一组结构

nested structures

我尝试使用hd5fpython库访问每个结构中的字段

enter image description here

使用以下代码:

mat_dict = h5py.File(file_path, 'r')
result = mat_dict['JKPRR']['results']['ChangingKnob'][0]['result']

但显然我不能深入到:

result = mat_dict['JKPRR']['results']['ChangingKnob'][0]

有谁知道我怎样才能进入更深的领域吗


Tags: 文件resultstructure结构resultsdictparentnested
1条回答
网友
1楼 · 发布于 2024-04-18 16:59:33

解决方案及;讨论以下问题:

https://github.com/h5py/h5py/issues/1668

首先,简单一点:看起来ChangingKnob数据集是2D的,所以要得到一个项目,需要两个索引:

mat_dict['JKPRR']['results']['ChangingKnob'][0, 0]

这是等效的,但更容易阅读:

mat_dict['JKPRR/results/ChangingKnob'][0, 0]

看起来Matlab正在数据集中存储HDF5引用(一种链接),因此您需要遵循引用:

> ref = mat_dict['JKPRR/results/ChangingKnob'][0, 0] dataset =
> mat_dict[ref]

希望在此之后,您可以使用dataset['result']访问一个字段,除非Matlab设置了更多障碍

相关问题 更多 >