Ich habe einen Python-Code, dessen Ausgabe eine Matrix mit Größe ist, deren Einträge alle vom Typ sind float
. Wenn ich es mit der Erweiterung .dat
speichere, liegt die Dateigröße in der Größenordnung von 500 MB. Ich habe gelesen, dass die Verwendung h5py
die Dateigröße erheblich reduziert. Nehmen wir also an, ich habe das 2D-Numpy-Array benannt A
. Wie speichere ich es in einer h5py-Datei? Wie lese ich dieselbe Datei und füge sie als Numpy-Array in einen anderen Code ein, da ich Manipulationen mit dem Array vornehmen muss?
100
.dat
Erweiterung?np.savetxt("output.dat",A,'%10.8e')
np.save('output.dat', A)
, um es in einem Binärformat zu speichern (viel schneller, viel weniger Speicherplatz).A = np.loadtxt('output.dat',unpack=True)
h5py
Erstellen Sie also keine kleineren Dateien als diesenp.save
? isth5py
schneller alsnp.save
für Arrays der in der Frage angegebenen Größe?Antworten:
h5py bietet ein Modell von Datensätzen und Gruppen . Ersteres sind im Grunde Arrays und letzteres können Sie sich als Verzeichnisse vorstellen. Jeder ist benannt. Sie sollten sich die Dokumentation zur API und Beispiele ansehen:
http://docs.h5py.org/en/latest/quick.html
Ein einfaches Beispiel, in dem Sie alle Daten im Voraus erstellen und nur in einer HDF5-Datei speichern möchten, sieht ungefähr so aus:
Sie können diese Daten dann wieder laden, indem Sie Folgendes verwenden: '
Schauen Sie sich auf jeden Fall die Dokumente an:
http://docs.h5py.org
Das Schreiben in eine hdf5-Datei hängt entweder von h5py oder pytables ab (jede hat eine andere Python-API, die sich über der hdf5-Dateispezifikation befindet). Sie sollten auch einen Blick auf andere einfache Binärformaten nehmen von numpy bereitgestellt nativ wie
np.save
,np.savez
etc:http://docs.scipy.org/doc/numpy/reference/routines.io.html
quelle
data.h5
vorhanden ist, aber ich kann es nicht mit HDFView anzeigen. Ich kann den Inhalt mit h5py lesen, aber nicht mit HDFView überprüfen. Irgendeine Idee warum?Eine sauberere Methode zum Öffnen / Schließen von Dateien und zum Vermeiden von Speicherlecks:
Vorbereitung:
Schreiben:
Lesen:
quelle
with
Funktion von Python wird als Kontextmanager bezeichnet. Dadurch wird sichergestellt, dass die Datei nach ihrer Verwendung geschlossen wird. Weitere Informationen finden Sie in der offiziellen Dokumentation zur Verfügung: docs.python.org/3/library/contextlib.html