Ich versuche, Daten aus der HDF5-Datei in Python zu lesen. Ich kann die hdf5-Datei mit lesen h5py
, aber ich kann nicht herausfinden, wie ich auf Daten in der Datei zugreifen kann.
Mein Code
import h5py
import numpy as np
f1 = h5py.File(file_name,'r+')
Dies funktioniert und die Datei wird gelesen. Aber wie kann ich auf Daten innerhalb des Dateiobjekts zugreifen f1
?
hdf5
Datei unterscheidet sich von einerhdf
Datei? Ich habehdf
s (es sind mehrere Bildbänder), aber ich kann nicht herausfinden, wie ich sie öffnen soll.Antworten:
Lesen Sie HDF5
import h5py filename = "file.hdf5" with h5py.File(filename, "r") as f: # List all groups print("Keys: %s" % f.keys()) a_group_key = list(f.keys())[0] # Get the data data = list(f[a_group_key])
Schreiben Sie HDF5
import h5py # Create random data import numpy as np data_matrix = np.random.uniform(-1, 1, size=(10, 3)) # Write data to HDF5 with h5py.File("file.hdf5", "w") as data_file: data_file.create_dataset("group_name", data=data_matrix)
Weitere Informationen finden Sie in den h5py-Dokumenten .
Alternativen
Für Ihre Anwendung kann Folgendes wichtig sein:
Siehe auch: Vergleich der Datenserialisierungsformate
Wenn Sie eher nach einer Möglichkeit suchen, Konfigurationsdateien zu erstellen, sollten Sie meinen kurzen Artikel Konfigurationsdateien in Python lesen
quelle
f[key].value
h5py
Version 2.1: "Die EigenschaftDataset.value
, die auf h5py 1.0 zurückgeht, ist veraltet und wird in einer späteren Version entfernt. Diese Eigenschaft speichert das gesamte Dataset in einem NumPy-Array. Code using.value
sollte aktualisiert werden, um die NumPy-Indizierung mitmydataset[...]
oder zu verwendenmydataset[()]
wie angemessen."Sie können Pandas verwenden.
import pandas as pd pd.read_hdf(filename,key)
quelle
Datei lesen
import h5py f = h5py.File(file_name, mode)
Untersuchen der Struktur der Datei durch Drucken der vorhandenen HDF5-Gruppen
for key in f.keys(): print(key) #Names of the groups in HDF5 file.
Daten extrahieren
#Get the HDF5 group group = f[key] #Checkout what keys are inside that group. for key in group.keys(): print(key) data = group[some_key_inside_the_group].value #Do whatever you want with data #After you are done f.close()
quelle
for key in data.keys(): print(key) #Names of the groups in HDF5 file.
Dies kann ersetzt werden durchlist(data)
data.visit(print)
data.close()
wird am Ende benötigt.Hier ist eine einfache Funktion, die ich gerade geschrieben habe und die eine .hdf5-Datei liest, die von der Funktion save_weights in Keras generiert wurde, und ein Diktat mit Ebenennamen und Gewichten zurückgibt:
def read_hdf5(path): weights = {} keys = [] with h5py.File(path, 'r') as f: # open file f.visit(keys.append) # append all keys to list for key in keys: if ':' in key: # contains data if ':' in key print(f[key].name) weights[f[key].name] = f[key].value return weights
https://gist.github.com/Attila94/fb917e03b04035f3737cc8860d9e9f9b .
Ich habe es nicht gründlich getestet, mache aber den Job für mich.
quelle
Um den Inhalt der .hdf5-Datei als Array zu lesen, können Sie folgende Schritte ausführen
> import numpy as np > myarray = np.fromfile('file.hdf5', dtype=float) > print(myarray)
quelle
Verwenden Sie den folgenden Code, um Daten zu lesen und in ein Numpy-Array umzuwandeln
import h5py f1 = h5py.File('data_1.h5', 'r') list(f1.keys()) X1 = f1['x'] y1=f1['y'] df1= np.array(X1.value) dfy1= np.array(y1.value) print (df1.shape) print (dfy1.shape)
quelle
from keras.models import load_model h= load_model('FILE_NAME.h5')
quelle
Sie müssen lediglich einen Datensatz erstellen. Wenn Sie sich die Kurzanleitung ansehen, sehen Sie, dass Sie das Dateiobjekt verwenden müssen, um ein Dataset zu erstellen. Also,
f.create_dataset
und dann können Sie die Daten lesen. Dies wird in den Dokumenten erklärt .quelle
Mit Hilfe von Antworten aus dieser Frage und dem neuesten Dokument konnte ich meine numerischen Arrays mit extrahieren
import h5py with h5py.File(filename, 'r') as h5f: h5x = h5f[list(h5f.keys())[0]]['x'][()]
Wo
'x'
ist in meinem Fall einfach die X-Koordinate?quelle
Wenn Sie Datensätze in der HDF-Datei benannt haben, können Sie diese Datensätze mit dem folgenden Code lesen und in numpy-Arrays konvertieren:
import h5py file = h5py.File('filename.h5', 'r') xdata = file.get('xdata') xdata= np.array(xdata)
Wenn sich Ihre Datei in einem anderen Verzeichnis befindet, können Sie den Pfad vor hinzufügen
'filename.h5'
.quelle