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
Lepaskan: 2024-11-03 16:44:03
asal
930 orang telah melayarinya

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

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>
Salin selepas log masuk
  1. Muatkan rentetan JSON ke dalam senarai bersarang:
<code class="python">b_new = json.loads(obj_text)</code>
Salin selepas log masuk
  1. Tukar senarai bersarang kembali ke tatasusunan NumPy:
<code class="python">a_new = np.array(b_new)</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan