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

Mary-Kate Olsen
Freigeben: 2024-11-03 16:44:03
Original
870 Leute haben es durchsucht

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

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>
Nach dem Login kopieren
  1. Laden Sie den JSON-String in eine verschachtelte Liste:
<code class="python">b_new = json.loads(obj_text)</code>
Nach dem Login kopieren
  1. Konvertieren die verschachtelte Liste zurück in ein NumPy-Array:
<code class="python">a_new = np.array(b_new)</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage