保存为 .hdf5 时保留数据集或组的(非字母顺序)顺序

Preserving the (non-alphabetical) order of data sets or groups when saving to .hdf5

我有一些原始数据想以 .hdf5 文件格式存储,连同我从数据分析中得到的结果。在将数据保存到磁盘之前,我使用时间以对我有意义的方式对不同的数据集进行排序。一个示例可能是数据集按如下方式排序:['50us','100us','200us','5ns','20ns','500ns'] - 我通常按时间对数据进行排序。

问题是将数据保存到 .hdf5 时,数据集按字母顺序排序。为了证实这一点,我做了这个最小的工作示例:

with h5py.File(destination_folder+'\debugging.hdf5', 'w') as f:
    alphabet_example = ['zz9999', 'zz8888','aaaa9999','ZZ9999']
    for name in alphabet_example:
        group_string = 'testing/'+ name
        f[group_string] = np.linspace(1,10,37)

    real_example = ['50us','100us','200us','5ns','20ns','500ns']
    data_for_example = [1,2,3,4,5,6]
    for num, name in enumerate(real_example):
        group_string = 'real/'+ name
        f[group_string] = data_for_example[num]


    for names in f['testing/']:
        print(names)

    print('\n')

    for names in f['real/']:
        print(names)
        print(f['real/'+names].value)

如果数据集(和组)可以按照我保存它们的顺序存储,我会节省很多开发和执行时间。否则,我必须 运行 一个对数据进行排序的函数 每次 我从文件加载数据 - 这适用于数据的分析和绘图。现在我正在使用 alphabeyt 列表作为每个数据集的前缀,因此它们变成 'a_50us'、'b_100us'、'c_200us' 等,但是使用这种解决方案有点尴尬当您想与协作者共享代码和 .hdf5 文件时。

如果重要的话,我使用 windows 7、python 3.5 和 h5py 2.6.0 :)

干杯!

据我所知,这对于 h5py 是不可能的。但是,可以使用 netCDF4(如果有的话,Anaconda 发行版附带)。 HDF5 和 NetCDF4 文件是可互操作的,因此生成的文件稍后可以使用 h5py 读取。