python - 如何使用 hd5f 访问 *.mat 文件中的嵌套结构?
问题描述
我尝试访问 matlab 文件 (*.mat) 的以下结构:
其中包含以下一组结构
我尝试使用hd5f python lib访问每个结构内的字段
使用以下代码:
mat_dict = h5py.File(file_path, 'r')
result = mat_dict['JKPRR']['results']['ChangingKnob'][0]['result']
但显然我不能深入:
result = mat_dict['JKPRR']['results']['ChangingKnob'][0]
有谁知道我怎样才能去更深的领域?
解决方案
以下问题的解决方案和讨论:
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 遇到了更多障碍。
推荐阅读
- javascript - 访问匿名函数内的函数(从另一个文件)
- swift - 通过插入新行创建无限滚动效果
- python - 循环布尔列表
- ffmpeg - 使用 FFMPEG 从视频中提取图像并插入数据库
- c# - 如何访问拆分文本文件中的单个字符串
- python - 如何根据 groupby+nlargest 结果过滤我的数据框?
- mysql - 当 select 语句中给出格式“dd-MM-YYYY”时按日期排序未按预期工作
- synchronization - Mpeg TS:视频/音频同步的工作原理
- php - 读取 csv 文件列并将它们写入新文件
- dart - 我如何在 Dart 中按价格排序对象?