2016-07-29 52 views
0

我有一些原始數據,我想以.hdf5文件格式存儲,並且從數據分析中獲得結果。在將數據保存到磁盤之前,我使用時間以對我有意義的方式對不同的數據集進行排序。其中一個例子可能是數據集按如下排序:['50us','100us','200us','5ns','20ns','500ns'] - 我通常會隨着時間的推移對數據進行排序。當保存爲.hdf5時,保留數據集或組的(非字母順序)

問題是,當將數據保存到.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,蟒蛇3.5和2.6.0 h5py如果它的事項:)

乾杯!

回答

1

據我所知,這是不可能與h5py。但是,可以使用netCDF4(如果有的話,附帶Anaconda發行版)。 HDF5和NetCDF4文件可以互操作,因此生成的文件可以在以後用h5py讀取。

+0

感謝您的評論。我會看看netCDF4 :) – DonMP