首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自更大hdf5中的组的新hdf5

来自更大hdf5中的组的新hdf5
EN

Stack Overflow用户
提问于 2021-06-03 22:23:44
回答 1查看 27关注 0票数 0

我已经创建了一个巨大的hdf5数据集,格式如下:

代码语言:javascript
复制
group1/raw
group1/preprocessed
group1/postprocessed
group2/raw
group2/preprocessed
group2/postprocessed
....
group10/raw
group10/preprocessed
group10/postprocessed

但是,我意识到为了便于移植,我希望有10个不同的hdf5文件,每个组一个。python中有没有一个函数可以在不遍历所有数据和扫描整个原始hdf5树的情况下实现这一点?

类似于:

代码语言:javascript
复制
import h5py

file_path = 'path/to/data.hdf5'

hf = h5py.File(file_path, 'r')

print(hf.keys())

for group in hf.keys():
    
    # create a new dataset for the group
    hf_tmp = h5py.File(group + '.h5', 'w')
    # get data from hf[key] and dumb them into the new file
    # something like
    # hf_tmp = hf[group]
    # hf_tmp.dumb()
    hf_tmp.close()


hf.close()
EN

回答 1

Stack Overflow用户

发布于 2021-06-03 22:56:52

你的想法是对的。上面有几个问题和答案,展示了如何做到这一点。

从这个开始。它展示了如何遍历关键字并确定它是一个组还是一个数据集。:h5py: how to use keys() loop over HDF5 Groups and Datasets

然后看看这些。每种方法都显示了解决问题的略有不同的方法。

这说明了一种方法。Extracting datasets from 1 HDF5 file to multiple files

另外,这是我之前写的一篇文章:How to copy a dataset object to a different hdf5 file using pytables or h5py?

这正好相反(将不同文件中的数据集复制到一个文件中)。它很有用,因为它演示了如何使用.copy()方法:How can I combine multiple .h5 file?

最后,您应该查看visititems()方法以递归搜索所有组和数据集。有关详细信息,请查看以下答案:is there a way to get datasets in all groups at once in h5py?

这应该会回答你的问题。

下面是一些将所有这些想法结合在一起的伪代码。它适用于您的架构,其中所有数据集都位于根级别组中。它不适用于具有多个组级别的数据集的更一般情况。对于更一般的情况,请使用visititems()

伪代码如下:

代码语言:javascript
复制
with h5py.File(file_path, 'r') as hf:
    print(hf.keys())  
    # loop on group names at root level
    for group in hf.keys():        
        hf_tmp = h5py.File(group + '.h5', 'w')
        # loop on datasets names in group
        for dset in hf[group].keys():
        # copy dataset to the new group file 
            hf.copy(group+'/'+dset, hf_tmp)  
        hf_tmp.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67823276

复制
相关文章

相似问题

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