首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查Python中的.h5文件

如何检查Python中的.h5文件
EN

Stack Overflow用户
提问于 2017-04-12 13:48:24
回答 3查看 7.5K关注 0票数 4

如何查看给定的.h5文件在Python中有哪些变量、数据集等?

我可以通过运行以下命令来读取该文件

代码语言:javascript
复制
import h5py
f = h5py.File(filename, 'r')

现在如何查看我的.h5文件中有哪些变量?

运行f.keys()输出非信息。

代码语言:javascript
复制
KeysView(<HDF5 file filename (mode r)>)

在Matlab中,我只调用h5disp(文件名),但是想知道如何用Python实现它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-12 13:55:00

你试过吗?

代码语言:javascript
复制
print(list(f.keys()))

这将为您提供hdf5文件中的所有组。如果f是一个组,则可以对数据集进行同样的操作。

票数 6
EN

Stack Overflow用户

发布于 2017-04-12 16:18:38

也许是过火了,但我有这个可能对某些人有用:

代码语言:javascript
复制
from __future__ import print_function

def scan_hdf5(path, recursive=True, tab_step=2):
    def scan_node(g, tabs=0):
        print(' ' * tabs, g.name)
        for k, v in g.items():
            if isinstance(v, h5.Dataset):
                print(' ' * tabs + ' ' * tab_step + ' -', v.name)
            elif isinstance(v, h5.Group) and recursive:
                scan_node(v, tabs=tabs + tab_step)
    with h5.File(path, 'r') as f:
        scan_node(f)

和简单的投入:

代码语言:javascript
复制
>>> scan_hdf5('/tmp/dummy.h5')
/
   - /d1
   /g1
     - /g1/d2
     - /g1/d3
   /g2
     - /g2/d4
     /g2/g3
       - /g2/g3/d5

或者返回更有用的元素的替代版本。

代码语言:javascript
复制
def scan_hdf52(path, recursive=True, tab_step=2):
    def scan_node(g, tabs=0):
        elems = []
        for k, v in g.items():
            if isinstance(v, h5.Dataset):
                elems.append(v.name)
            elif isinstance(v, h5.Group) and recursive:
                elems.append((v.name, scan_node(v, tabs=tabs + tab_step)))
        return elems
    with h5.File(path, 'r') as f:
        return scan_node(f)

有退货:

代码语言:javascript
复制
>>> scan_hdf5_2('/tmp/dummy.h5')
[u'/d1',
 (u'/g1', [u'/g1/d2', u'/g1/d3']),
 (u'/g2', [u'/g2/d4', (u'/g2/g3', [u'/g2/g3/d5'])])]
票数 7
EN

Stack Overflow用户

发布于 2020-05-08 00:27:11

我在试图找到一种方法来显示h5文件中的每个节点,以便能够提取只具有相应数据集的所需节点时,我遇到了这个问题。

我认为这很简单,但很容易理解(对我来说)片段:

代码语言:javascript
复制
h5 = h5py.File(filename, 'r')
def hierarchy(d):
    for item in d:
        if ' 0 member' in str(d[item]):
            print(d[item].name, ['empty group'])
        if isinstance(d[item], h5py.Group):
            hierarchy(d[item])
        else: #Dataset
            print(d[item].name, ['dataset'])
hierarchy(h5)

因此,我将在GUI应用程序中使用这一点,我将启用只选择“dataset”标记项。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43371438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档