2016-07-29 19 views
0

Ich habe einige Rohdaten, die ich im .hdf5-Dateiformat zusammen mit den Ergebnissen aus der Analyse der Daten speichern möchte. Bevor ich die Daten auf Platte speichere, sortiere ich die verschiedenen Datensätze auf eine Weise, die für mich sinnvoll ist, indem ich Zeit verwende. Ein Beispiel dafür könnte sein, dass die Datensätze wie folgt sortiert sind: ['50us', '100us', '200us', '5ns', '20ns', '500ns'] - Ich sortiere die Daten in der Regel mit zunehmender Zeit.Beibehalten der (nicht alphabetischen) Reihenfolge von Datensätzen oder Gruppen beim Speichern nach .hdf5

Das Problem ist, dass beim Speichern der Daten in die .hdf5 Datensätze alphabetisch sortiert sind. Um dies zu bestätigen, habe ich diese minimale Arbeitsbeispiel:

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) 

Ich würde mich retten so viel Entwicklung und Durchführung von Zeiten, wenn die Datensätze (und Gruppen) in der Reihenfolge gespeichert werden, könnte ich sie retten. Ansonsten muss ich eine Funktion ausführen, die Daten sortiert jedes Mal Ich lade Daten aus der Datei - dies gilt sowohl für die Analyse und Plotting der Daten. Im Moment benutze ich eine Liste von alphabeyt, um jeden Datensatz so voranzustellen, dass er "a_50us", "b_100us", "c_200us" usw. wird, aber es ist ein bisschen peinlich, diese Art von Lösung zu verwenden, wenn Sie die Daten teilen möchten Code und .hdf5 Dateien mit Mitarbeitern.

Ich benutze windows 7, Python 3.5 und h5py 2.6.0 wenn es :)

Prost ankommt!

Antwort

1

Dies ist meines Wissens mit h5py nicht möglich. Es ist jedoch möglich, netCDF4 (kommt mit der Anaconda-Verteilung, wenn Sie das haben). HDF5- und NetCDF4-Dateien sind interoperabel, so dass die resultierende Datei später mit h5py gelesen werden kann.

+0

Danke für Ihren Kommentar. Ich werde netCDF4 schauen :) – DonMP