Heim >Backend-Entwicklung >Python-Tutorial >Wie serialisiere ich NumPy-Arrays für Django-Kontextvariablen?

Wie serialisiere ich NumPy-Arrays für Django-Kontextvariablen?

DDD
DDDOriginal
2024-11-04 01:38:02584Durchsuche

How to Serialize NumPy Arrays for Django Context Variables?

NumPy-Array-JSON-Serialisierungsfehler

Beim Versuch, ein NumPy-Array als Django-Kontextvariable zu speichern, kann eine Fehlermeldung darauf hinweisen, dass das Array ist kein JSON serialisierbar.

Erklärung:

JSON, ein Datenformat für Webanwendungen, erfordert für eine effiziente Übertragung, dass Daten in einer bestimmten Struktur vorliegen. NumPy-Arrays hingegen sind nicht von Natur aus mit dem JSON-Format kompatibel, daher der Fehler.

Lösung:

Um dieses Problem zu beheben und das Array erfolgreich zu serialisieren , konvertieren Sie es in ein JSON-freundliches Format, bevor Sie es als Kontextvariable speichern. Die „.tolist()“-Methode von NumPy-Arrays bietet eine einfache Lösung:

<code class="python">import numpy as np

a = np.arange(10).reshape(2,5)
b = a.tolist()  # Convert NumPy array to nested lists</code>

Jetzt enthält die Variable b die gleichen Daten in einem Format, das mit der JSON-Serialisierung kompatibel ist. Sie können es als Django-Kontextvariable speichern, ohne dass der Serialisierungsfehler auftritt.

Zusätzliche Hinweise:

Um die JSON-Zeichenfolge wieder in ein NumPy-Array zu deserialisieren, verwenden Sie Folgendes Schritte:

  1. JSON lesen Datei:

    <code class="python">obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()</code>
  2. Laden Sie die JSON-Zeichenfolge:

    <code class="python">b_new = json.loads(obj_text)</code>
  3. Konvertieren Sie die Liste zurück in ein NumPy-Array:

    <code class="python">a_new = np.array(b_new)</code>

Mit diesen Schritten können Sie NumPy-Arrays effektiv serialisieren und deserialisieren zum Speichern und Abrufen von Daten in Django-Anwendungen.

Das obige ist der detaillierte Inhalt vonWie serialisiere ich NumPy-Arrays für Django-Kontextvariablen?. 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