我有一些原始数据,我想以.hdf5文件格式存储,以及从数据分析中得到的结果。在将数据保存到磁盘之前,我使用时间以对我有意义的方式对不同的数据集进行排序。这方面的一个例子可能是数据集的排序如下:[' 50us'' 100us',' 200us'' 5ns&#39 ;,' 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:)
干杯!
答案 0 :(得分:1)
据我所知,h5py无法做到这一点。但是,可以使用netCDF4(如果你有的话,可以附带Anaconda发行版)。 HDF5和NetCDF4文件是可互操作的,因此稍后可以使用h5py读取生成的文件。