首頁 > 後端開發 > Python教學 > 為什麼我無法在 Django 中將 NumPy 陣列序列化為 JSON?

為什麼我無法在 Django 中將 NumPy 陣列序列化為 JSON?

Mary-Kate Olsen
發布: 2024-11-03 16:44:03
原創
924 人瀏覽過

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

NumPy 數組和JSON 序列化:揭開謎團

使用NumPy 數組和Django 時,您可能會遇到神秘錯誤「NumPy數組不可JSON 序列化。

為了理解這個問題,我們深入研究 JSON 序列化領域。 JavaScript 物件表示法 (JSON) 是一種用於資料交換和儲存的流行資料格式。但是,NumPy 數組是多維數組,無法直接轉換為 JSON。這就是錯誤的根源。

解決方案:.tolist() 來救援

為了解決這個困境,我們使用 '.tolist()'方法。此方法將 NumPy 陣列轉換為巢狀清單。與陣列不同,巢狀列表可以序列化為 JSON,從而彌補了 NumPy 和 JSON 之間的差距。

實作:逐步指南

  1. 導入NumPy、編解碼器和json:
<code class="python">import numpy as np
import codecs, json</code>
登入後複製
  1. 建立NumPy 陣列:
<code class="python">a = np.arange(10).reshape(2, 5) # a 2 by 5 array</code>
登入後複製
  1. 將陣列轉換為巢狀清單using '.tolist()':
<code class="python">b = a.tolist() # nested lists with same data, indices</code>
登入後複製
  1. 定義JSON 儲存的檔案路徑:
<code class="python">file_path = "/path.json" ## your path variable</code>
登入後複製
  1. 序列化巢狀清單轉換為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>
登入後複製

反序列化:復原NumPy 陣列

從JSON 檔案還原NumPy 陣列:
  1. 將JSON 檔案讀入字串:
<code class="python">obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()</code>
登入後複製
  • <code class="python">b_new = json.loads(obj_text)</code>
    登入後複製
    轉換巢狀清單回傳NumPy 陣列:
    <code class="python">a_new = np.array(b_new)</code>
    登入後複製
    結論

    透過了解JSON 序列化的需求並使用'.tolist()'方法,我們可以無縫地彌合NumPy 數組和Django 之間的差距。這使我們能夠輕鬆地保存和檢索 NumPy 數組作為上下文變量,從而為我們的 Web 應用程式提供高級資料操作功能。

    以上是為什麼我無法在 Django 中將 NumPy 陣列序列化為 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

  • 來源:php.cn
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    作者最新文章
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板