首页 >后端开发 >Python教程 >如何在 Django 中序列化 NumPy 数组以实现 JSON 兼容性?

如何在 Django 中序列化 NumPy 数组以实现 JSON 兼容性?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-03 16:06:30770浏览

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