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

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

Mary-Kate Olsen
发布: 2024-11-03 16:06:30
原创
683 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板