Hallo,
Ich habe mit Windows 7 64-bit ein Programm zur Auswertung groesserer Datenmengen geschrieben und benutze numpy. Das Skript laeuft - keine Probleme.
Nun habe ich das Programm auf einem Server laufen lassen wollen (Windows 10 64-bit) und bekomme dort folgende Fehlermeldung:
numpy.core._exceptions.MemoryError: Unable to allocate 2.00 KiB for an array with shape (256,) and data type int64
Dieser Fehler bezieht sich auf die folgende Codezeile:
data=pd.read_csv('{}\{}'.format(path_input,file)).astype(np.uint8)
Leider finde ich dazu keinerlei Loesung - zumal mir 2 KiB nicht wirklich viel vorkommen
Gruss,
Memory Problem Numpy
Ist das der erste Aufruf, bei dem ein numpy-Array alloziert wird? Funktioniert ein `np.array([1,2,3])`-Aufruf fehlerfrei?
Pfade sind keine Strings, da benutzt man keine Stringformatierungen, sondern nutzt das, was einem pathlib.Path bietet.
Wenn der Zahlentyp eh uint8 sein soll, dann gib das doch gleich beim Laden an:
Pfade sind keine Strings, da benutzt man keine Stringformatierungen, sondern nutzt das, was einem pathlib.Path bietet.
Wenn der Zahlentyp eh uint8 sein soll, dann gib das doch gleich beim Laden an:
Code: Alles auswählen
from pathlib import Path
...
path_input = Path(...)
...
data = pd.read_csv(path_input / filename, dtype=np.uint8)
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@erta2610: Ist die Datei denn grösser? Die 2 KiB sind nicht viel, aber es kann ja sein, dass vorher schon für ein oder mehrere grosse Array Speicher angefordert wurden, und die 2 KiB dann „das Fass zum überlaufen bringen“. Einlesen von CSV-Dateien kann auch durchaus deutlich mehr Speicher benötigen als das eingelesene Array am Ende, weil Datentypen und Datenmenge vor dem einlesen nicht bekannt sind. Den Datentyp direkt vorgeben, wie von Sirius3 vorgeschlagen kann dabei helfen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@erta2610: Na das hat Sirius3 doch gezeigt wie man der Funktion mitteilt, welchen Datentyp die Elemente des Ergebnis haben sollen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis