Wie speichert man grosse Auswahl, so dass es weniger Speicher in python?
Ich bin neu in python. Ich habe ein großes array, a
mit Dimensionen wie (43200, 4000)
und muss ich diese sichern, wie ich es brauche für die zukünftige Verarbeitung. wenn ich versuche, es zu speichern mit einem np.savetxt
, die txt Datei ist zu groß und mein Programm läuft in den Speicher-Fehler als ich verarbeiten müssen 5 Dateien der gleichen Größe. Gibt es eine Möglichkeit zum speichern von großen arrays, so dass es weniger Speicher?
Dank.
- Haben Sie versucht, die
np.savetxt('file.npy.gz')
? Es wird länger dauern, um zu speichern und anschließend zu laden (wegen der Komprimierung), aber es sollte drastisch reduzieren die Größe der Datei. - danke für die Antwort, habe gerade versucht mit np.savetxt('file.npy.gz') und es zu reduzieren, meine Datei-Größe, konnte aber nicht in der Lage, laden Sie die Daten zurück.
- Sind Sie sicher, dass Sie geladen wird die Datei mit dem gleichen Datei-Erweiterung, die Sie es gespeichert haben?
np.loadtxt('file.npy.gz')
. - danke es funktioniert, eigentlich war ich laden Sie es in der read-Modus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie PyTables zum erstellen einer Hierarchical Data Format (HDF) - Datei die Daten zu speichern. Dies bietet einige interessante in-memory-Optionen, die link-Objekt, mit dem Sie arbeiten, um die Datei gespeichert in.
Hier ist ein weiterer StackOverflow-Fragen, die veranschaulicht, wie dies zu tun: "Wie bewahrt man ein NumPy mehrdimensionales array, in PyTables."
Wenn Sie bereit sind für die Arbeit mit dem array als ein Pandas DataFrame-Objekt, Sie können auch die Pandas Schnittstelle zu PyTables /im HDF5, z.B.:
Mit Dateien dieser Größe, könnten Sie überlegen, ob Ihre Anwendung ausgeführt werden kann mit einem parallelen Algorithmus und möglicherweise angewendet werden, um nur eine Teilmenge der große arrays, anstatt benötigen, verbrauchen Sie den gesamten array, bevor Sie fortfahren.
Speichern Ihre Daten in text-Datei ist enorm ineffizient. Numpy hat built-in speichern-Befehle speichern, und savez/savez_compressed das wäre viel besser geeignet für die Speicherung von großen arrays.
Je nachdem, wie Sie planen, Ihre Daten zu verwenden, sollten Sie auch einen Blick in im HDF5-format (h5py oder pytables), die können Sie zum speichern von großen Datenmengen, ohne laden zu müssen, es allen in Erinnerung.