Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah Saya Tidak Boleh Mensirikan Array NumPy kepada JSON dalam Django?

Mengapakah Saya Tidak Boleh Mensirikan Array NumPy kepada JSON dalam Django?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 16:44:03891semak imbas

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

NumPy Arrays dan JSON Serialization: Unveiling the Enigma

Apabila bekerja dengan NumPy arrays dan Django, anda mungkin menghadapi ralat samar, "NumPy array tidak boleh bersiri JSON." Mesej yang membingungkan ini timbul apabila cuba menyimpan tatasusunan NumPy sebagai pembolehubah konteks Django dan memaparkannya pada halaman web.

Untuk memahami isu ini, kami menyelidiki bidang pensirilan JSON. Notasi Objek JavaScript (JSON) ialah format data popular yang digunakan untuk pertukaran dan penyimpanan data. Walau bagaimanapun, tatasusunan NumPy, sebagai tatasusunan berbilang dimensi, tidak boleh ditukar terus kepada JSON. Di sinilah ralat berpunca.

Penyelesaian: .tolist() to the Rescue

Untuk menyelesaikan masalah ini, kami menggunakan '.tolist()' kaedah. Kaedah ini menukar tatasusunan NumPy kepada senarai bersarang. Senarai bersarang, tidak seperti tatasusunan, boleh disirikan kepada JSON, sekali gus merapatkan jurang antara NumPy dan JSON.

Pelaksanaan: Panduan Langkah demi Langkah

  1. Import NumPy, codec dan json:
<code class="python">import numpy as np
import codecs, json</code>
  1. Buat tatasusunan NumPy:
<code class="python">a = np.arange(10).reshape(2, 5) # a 2 by 5 array</code>
  1. Tukar tatasusunan kepada senarai bersarang menggunakan '.tolist()':
<code class="python">b = a.tolist() # nested lists with same data, indices</code>
  1. Tentukan laluan fail untuk storan JSON:
<code class="python">file_path = "/path.json" ## your path variable</code>
  1. Sirikan senarai bersarang kepada 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>

Unsirialisasi: Memulihkan Tatasusunan NumPy

Untuk memulihkan tatasusunan NumPy daripada fail JSON:

  1. Baca fail JSON ke dalam rentetan:
<code class="python">obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()</code>
  1. Muatkan rentetan JSON ke dalam senarai bersarang:
<code class="python">b_new = json.loads(obj_text)</code>
  1. Tukar senarai bersarang kembali ke tatasusunan NumPy:
<code class="python">a_new = np.array(b_new)</code>

Kesimpulan

Dengan memahami keperluan untuk penyirian JSON dan menggunakan '.tolist()' kaedah, kita boleh merapatkan jurang antara tatasusunan NumPy dan Django dengan lancar. Ini membolehkan kami menyimpan dan mendapatkan semula tatasusunan NumPy dengan mudah sebagai pembolehubah konteks, memperkasakan aplikasi web kami dengan keupayaan manipulasi data lanjutan.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Mensirikan Array NumPy kepada JSON dalam Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn