Heim >Backend-Entwicklung >Python-Tutorial >Warum kann ich in Django ein NumPy-Array nicht in JSON serialisieren?

Warum kann ich in Django ein NumPy-Array nicht in JSON serialisieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-03 16:44:03999Durchsuche

Why Can't I Serialize a NumPy Array to JSON in Django?

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

  1. Importieren Sie NumPy, Codecs und JSON:
<code class="python">import numpy as np
import codecs, json</code>
  1. Erstellen Sie ein NumPy-Array:
<code class="python">a = np.arange(10).reshape(2, 5) # a 2 by 5 array</code>
  1. Konvertieren Sie das Array in eine verschachtelte Liste mit '.tolist()':
<code class="python">b = a.tolist() # nested lists with same data, indices</code>
  1. Definieren Sie den Dateipfad für die JSON-Speicherung:
<code class="python">file_path = "/path.json" ## your path variable</code>
  1. Serialisieren Sie die verschachtelte Liste zu JSON:
<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:

  1. Lesen Sie die JSON-Datei in einen String:
<code class="python">obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()</code>
  1. Laden Sie den JSON-String in eine verschachtelte Liste:
<code class="python">b_new = json.loads(obj_text)</code>
  1. Konvertieren die verschachtelte Liste zurück in ein NumPy-Array:
<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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn