Wie ändere ich den Integer-Typ beim Erstellen eines Meshgrids mit Numpy?

Oct 21 2020

Ich habe den folgenden Fehler erhalten

MemoryError: 201. GiB für ein Array mit Form (2999, 2999, 2999) und Datentyp int64 kann nicht zugeordnet werden

beim Erstellen eines Meshgrids mit Numpy mithilfe des folgenden Codes

dimension=3
tot_length=2000
list_no=range(1, tot_length)
arr = np.meshgrid ( *[list_no for _ in range ( dimension )] )

Darf ich wissen, wo ich int64 in int32 oder eine andere mögliche Einstellung ändern kann, mit der ich die Anzahl maximieren kann, tot_lengthdie höher als der Wert ist ?2000

Ich habe die Dokumentation überprüft , aber es gibt keine Option zum Ändern des Datentyps in Typ 32.

Antworten

1 Eric Oct 20 2020 at 23:01

Darf ich wissen, wo ich int64 in int32 ändern soll?

NumPy vermutet, int64weil Sie ihm ein rangeObjekt geben, in dem es ein Array erwartet, und ranges Sequenzen von sind int. Verwenden Sie ein Array, wenn Sie nicht raten möchten:

list_no = np.array(range(1, tot_length), dtype=np.int32)

oder einfacher

list_no = np.arange(1, tot_length, dtype=np.int32)

Natürlich benötigen Sie immer noch 100 GB Speicher, was immer noch ziemlich groß ist.