【问题标题】:Preserving the (non-alphabetical) order of data sets or groups when saving to .hdf5保存到 .hdf5 时保留数据集或组的(非字母)顺序
【发布时间】:2016-12-03 22:24:33
【问题描述】:

我有一些原始数据想以 .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 :)

干杯!

【问题讨论】:

    标签: python sorting python-3.x hdf5 h5py


    【解决方案1】:

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

    【讨论】:

    • 感谢您的评论。我会研究 netCDF4 :)
    猜你喜欢
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多