首頁 >後端開發 >Python教學 >如何在 Django 中序列化 JSON 的 NumPy 陣列?

如何在 Django 中序列化 JSON 的 NumPy 陣列?

Patricia Arquette
Patricia Arquette原創
2024-11-03 15:12:03286瀏覽

How do I serialize NumPy arrays for JSON in Django?

處理JSON 的NumPy 陣列序列化

使用Django 框架在Web 開發中使用NumPy 陣列時,您可能會遇到錯誤群組:您可能會遇到錯誤群組:您可能會遇到錯誤群組:您可能會遇到錯誤群組:您可能會遇到錯誤群組:您可能會遇到錯誤群組:您可能會遇到錯誤群組:當您

array([   0,  239,  479,  717,  952, 1192, 1432, 1667], dtype=int64) is not JSON serializable

出現此錯誤是因為NumPy數組預設不可 JSON 序列化。 JSON 是一種流行的資料交換格式,僅支援某些資料類型,例如整數、字串和這些類型的陣列。但是,NumPy 數組是複雜的多維對象,無法直接用 JSON 表示。

解決方案:將 NumPy 陣列轉換為 JSON

要解決此問題,您可以將 NumPy 陣列轉換為 JSON 相容的表示形式。建議的方法是在數組上使用 .tolist() 方法:

<code class="python">import numpy as np
a = np.arange(10).reshape(2,5) # Create a 2x5 array
b = a.tolist() # Convert to a list of lists</code>

.tolist() 方法將 NumPy 數組轉換為嵌套的元素列表,與 JSON 相容。

儲存並載入JSON 資料

要將轉換後的清單儲存為JSON 格式,請使用以下程式碼:

<code class="python">import codecs, json
file_path = "/path/to/file.json"
json.dump(b, codecs.open(file_path, 'w', encoding='utf-8'), separators=(',', ':'), sort_keys=True, indent=4)</code>

此程式碼將儲存將b 作為具有正確格式的指定路徑中的JSON 檔案列出。

從 JSON 檔案載入並重建 NumPy 陣列:

<code class="python">new_b = json.loads(codecs.open(file_path, 'r', encoding='utf-8').read())
new_a = np.array(new_b)</code>

此程式碼讀取 JSON 檔案並將其轉換回清單 new_b 中。然後 np.array() 函數重建 NumPy 數組 new_a。

結論

透過將NumPy 陣列轉換為JSON 相容的清單並使用適當的JSON 序列化和反序列化方法,您可以有效地處理Django 上下文變數中NumPy 資料的儲存和檢索。這確保了資料可以在 Django 後端和前端之間安全且有效率地傳輸以進行渲染。

以上是如何在 Django 中序列化 JSON 的 NumPy 陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn