首頁 >後端開發 >Python教學 >如何在 Django 中序列化 NumPy 數組以實現 JSON 相容性?

如何在 Django 中序列化 NumPy 數組以實現 JSON 相容性?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 16:06:30736瀏覽

How to Serialize NumPy Arrays in Django for JSON Compatibility?

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中文網其他相關文章!

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