NumPy-Arrays und JSON-Serialisierung: Das Rätsel wird aufgedeckt
Beim Arbeiten mit NumPy-Arrays und Django kann der kryptische Fehler „NumPy“ auftreten Array ist nicht JSON-serialisierbar.“ Diese verwirrende Meldung erscheint, wenn versucht wird, ein NumPy-Array als Django-Kontextvariable zu speichern und auf einer Webseite darzustellen.
Um dieses Problem zu verstehen, befassen wir uns mit der JSON-Serialisierung. JavaScript Object Notation (JSON) ist ein beliebtes Datenformat, das für den Datenaustausch und die Speicherung verwendet wird. Da NumPy-Arrays jedoch mehrdimensionale Arrays sind, können sie nicht direkt in JSON konvertiert werden. Daraus ergibt sich der Fehler.
Die Lösung: .tolist() zur Rettung
Um dieses Dilemma zu lösen, verwenden wir die Lösung „.tolist()“. Verfahren. Diese Methode konvertiert ein NumPy-Array in eine verschachtelte Liste. Verschachtelte Listen können im Gegensatz zu Arrays in JSON serialisiert werden und so die Lücke zwischen NumPy und JSON schließen.
Implementierung: Schritt-für-Schritt-Anleitung
<code class="python">import numpy as np import codecs, json</code>
<code class="python">a = np.arange(10).reshape(2, 5) # a 2 by 5 array</code>
<code class="python">b = a.tolist() # nested lists with same data, indices</code>
<code class="python">file_path = "/path.json" ## your path variable</code>
<code class="python">json.dump(b, codecs.open(file_path, 'w', encoding='utf-8'), separators=(',', ':'), sort_keys=True, indent=4) ### this saves the array in .json format</code>
Unserialisierung: Wiederherstellen des NumPy-Arrays
So stellen Sie das NumPy-Array aus der JSON-Datei wieder her:
<code class="python">obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()</code>
<code class="python">b_new = json.loads(obj_text)</code>
<code class="python">a_new = np.array(b_new)</code>
Fazit
Durch das Verständnis der Notwendigkeit einer JSON-Serialisierung und die Verwendung von „.tolist()“ Mit dieser Methode können wir die Lücke zwischen NumPy-Arrays und Django nahtlos schließen. Dadurch können wir NumPy-Arrays mühelos als Kontextvariablen speichern und abrufen und so unsere Webanwendungen mit erweiterten Datenbearbeitungsfunktionen ausstatten.
Das obige ist der detaillierte Inhalt vonWarum kann ich in Django ein NumPy-Array nicht in JSON serialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!