Wie speichern Sie ein großes Array, so dass es weniger Speicher in Python benötigt?

8

Ich bin neu bei Python. Ich habe ein großes Array, a , mit Dimensionen wie (43200, 4000) und ich muss dies speichern, da ich es für die zukünftige Verarbeitung brauche. Wenn ich versuche, es mit einem np.savetxt zu speichern, ist die TXT-Datei zu groß und mein Programm läuft auf Speicherfehler, da ich 5 Dateien derselben Größe verarbeiten muss. Gibt es eine Möglichkeit, große Arrays zu speichern, so dass weniger Speicher benötigt wird?

Danke.

    
user2766019 10.09.2013, 17:41
quelle

2 Antworten

4

Sie können PyTables verwenden, um eine Datei mit hierarchischem Datenformat (HDF) zum Speichern der Daten zu erstellen. Dies bietet einige interessante In-Memory-Optionen, die das Objekt, mit dem Sie arbeiten, mit der Datei verknüpfen, in der es gespeichert ist.

Hier sind weitere StackOverflow-Fragen, die zeigen, wie das geht: " So speichern Sie ein mehrdimensionales NumPy-Array in PyTables. "

Wenn Sie mit Ihrem Array als Pandas DataFrame-Objekt arbeiten möchten, können Sie auch die Pandas-Schnittstelle zu PyTables / HDF5 verwenden, z. B .:

%Vor%

Mit Dateien dieser Größe können Sie überlegen, ob Ihre Anwendung mit einem parallelen Algorithmus ausgeführt werden kann und möglicherweise nur auf Teilmengen der großen Arrays angewendet wird, anstatt das gesamte Array vor dem Fortfahren verbrauchen zu müssen.

    
ely 10.09.2013, 18:20
quelle
10

Das Speichern Ihrer Daten in einer Textdatei ist äußerst ineffizient. Numpy verfügt über integrierte Speicherbefehle speichern und savez / savez_compressed , was viel besser zum Speichern großer Arrays geeignet wäre.

Je nachdem, wie Sie Ihre Daten verwenden möchten, sollten Sie sich auch das HDF5-Format (h5py oder pytables) ansehen, mit dem Sie große Datenmengen speichern können, ohne sie alle im Speicher zu laden.

    
hackyday 10.09.2013 18:18
quelle

Tags und Links