Django 的NumPy 陣列序列化問題
在Django 上下文中使用NumPy 陣列時,您可能會遇到錯誤,指出該數組不是JSON可序列化。發生這種情況是因為 NumPy 陣列預設無法直接以 JSON 格式表示。
序列化說明
序列化涉及將物件轉換為可以傳輸的格式網路或持久儲存。 JSON(JavaScript 物件表示法)是一種流行的資料格式,可用於這兩個目的。但是,儲存在 NumPy 原生資料結構(與記憶體最佳化一致)中的陣列與 JSON 的格式不相容。
解決方案:轉換為列表
要解決此問題,您可以使用 .tolist() 方法將 NumPy 數組轉換為嵌套列表。此過程建立一個本質上與 JSON 序列化相容的列表結構。
程式碼範例
以下是在Python 中序列化和反序列化NumPy 數組的範例:
<code class="python">import numpy as np import codecs, json # Create a 2D NumPy array a = np.arange(10).reshape(2, 5) # Convert the array to a list b = a.tolist() # Serialize the list using JSON json.dump(b, codecs.open('path.json', 'w', encoding='utf-8'), separators=(',', ':'), sort_keys=True, indent=4) # De-serialize the JSON back to a NumPy array obj_text = codecs.open('path.json', 'r', encoding='utf-8').read() b_new = json.loads(obj_text) a_new = np.array(b_new)</code>
此過程將NumPy 陣列轉換為可透過網路傳輸的格式,並隨後重建為其原始形式。
以上是如何在 Django 中序列化 NumPy 數組以實現 JSON 相容性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!