Ist die Verwendung von HDF5 für die Speicherung großer Arrays (anstelle von flachen Binärdateien) von Vorteil für die Analysegeschwindigkeit oder die Speichernutzung?

Ich verarbeite große 3D-Arrays, die ich häufig auf verschiedene Arten schneiden muss, um eine Vielzahl von Datenanalysen durchzuführen. Ein typischer "Würfel" kann ~ 100 GB groß sein (und wird wahrscheinlich in Zukunft größer werden)

Es scheint, dass das typische empfohlene Dateiformat für große Datenmengen in Python die Verwendung von HDF5 (entweder h5py oder pytables) ist. Meine Frage ist: Hat die Verwendung von HDF5 zum Speichern und Analysieren dieser Cubes einen Vorteil in Bezug auf Geschwindigkeit oder Speichernutzung, während sie in einfachen flachen Binärdateien gespeichert werden? Ist HDF5 besser für Tabellendaten geeignet als für große Arrays, mit denen ich arbeite? Ich sehe, dass HDF5 eine gute Komprimierung liefern kann, aber ich interessiere mich mehr für die Verarbeitungsgeschwindigkeit und den Umgang mit Speicherüberlauf.

Ich möchte häufig nur eine große Teilmenge des Cubes analysieren. Ein Nachteil von pytables und h5py ist, dass ich, wenn ich einen Teil des Arrays nehme, immer ein numpy-Array zurückbekomme, das den Speicher belegt. Wenn ich jedoch eine numpy-Memmap einer flachen Binärdatei in Scheiben schneide, kann ich eine Ansicht erhalten, die die Daten auf der Festplatte hält. Es scheint also einfacher zu sein, bestimmte Bereiche meiner Daten zu analysieren, ohne meinen Speicher zu überlasten.

Ich habe sowohl pytables als auch h5py untersucht und habe bisher keinen der Vorteile für meinen Zweck gesehen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage