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中文网其他相关文章!