来自hdf5的加载组

问题描述 投票:0回答:1

我有一个hdf5文件,其中包含组内的数据集。示例:

group1/dataset1
group1/dataset2
group1/datasetX


group2/dataset1
group2/dataset2
group2/datasetX

我能够独立读取每个数据集。这就是我从.hdf5文件读取数据集的方式:

def hdf5_load_dataset(hdf5_filename, dsetname):
    with h5py.File(hdf5_filename, 'r') as f:
        dset = f[dsetname]
        return dset[...]

# pseudo-code of how I call the hdf5_load_dataset() function
group = {'group1':'dataset1', 'group1':'dataset2' ...}

for group in groups:
    for dataset in groups[group]:
        dset_value = hdf5_load_dataset_value(path_hdf5_file, f'{group}/{dataset}')
        # do stuff

我想知道是否有可能将第1组,然后第2组的所有数据集作为字典或类似文件加载到单个文件中。我的脚本花费了相当多的时间(4分钟)来读取约200k数据集。有2k个群组和100个数据集。因此,如果我立即将一个组加载到内存中,它将不会使它过载,并且速度会有所提高。

这是我正在寻找的伪代码:

for group in groups:
    dset_group_as_dict = hdf5_load_group(path_hdf5_file, f'{group}')

    for dataset in dset_group_as_dict;
        #do stuff
python python-3.x hdf5
1个回答
0
投票

不,没有一个函数可以一次读取多个组或数据集。您必须通过读取一组或数据集的较低级别的函数来自己完成此任务。

您能给我们进一步介绍吗?它是什么样的数据,您想如何处理它? (您要进行统计吗?要作图吗?等等?)您最终想要实现什么?这可以帮助我们避免避免经典的XY problem

[在您的earlier question中,您说您将许多小的CSV文件转换为一个大的HDF文件。你能告诉我们为什么吗?有许多CSV小文件怎么办?

根据我的经验,具有大量组和数据集的HDF文件非常慢,就像您现在正在体验的那样。拥有相对较少但较大的数据集是否更好?您是否有可能以某种方式将多个数据集合并为一个?如果不是这样,HDF可能不是解决您问题的最佳解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.