如何在 Django 中序列化 JSON 的 NumPy 数组?

Patricia Arquette
发布: 2024-11-03 15:12:03
原创
259 人浏览过

How do I serialize NumPy arrays for JSON in Django?

处理 JSON 的 NumPy 数组序列化

使用 Django 框架在 Web 开发中使用 NumPy 数组时,您可能会遇到错误:

array([   0,  239,  479,  717,  952, 1192, 1432, 1667], dtype=int64) is not JSON serializable
登录后复制

出现此错误是因为 NumPy 数组默认情况下不可 JSON 序列化。 JSON 是一种流行的数据交换格式,仅支持某些数据类型,例如整数、字符串和这些类型的数组。但是,NumPy 数组是复杂的多维对象,无法直接用 JSON 表示。

解决方案:将 NumPy 数组转换为 JSON

要解决此问题,您可以将将 NumPy 数组转换为 JSON 兼容的表示形式。推荐的方法是在数组上使用 .tolist() 方法:

<code class="python">import numpy as np
a = np.arange(10).reshape(2,5) # Create a 2x5 array
b = a.tolist() # Convert to a list of lists</code>
登录后复制

.tolist() 方法将 NumPy 数组转换为嵌套的元素列表,与 JSON 兼容。

保存和加载 JSON 数据

要将转换后的列表保存为 JSON 格式,请使用以下代码:

<code class="python">import codecs, json
file_path = "/path/to/file.json"
json.dump(b, codecs.open(file_path, 'w', encoding='utf-8'), separators=(',', ':'), sort_keys=True, indent=4)</code>
登录后复制

此代码将保存将 b 作为具有正确格式的指定路径中的 JSON 文件列出。

从 JSON 文件加载并重建 NumPy 数组:

<code class="python">new_b = json.loads(codecs.open(file_path, 'r', encoding='utf-8').read())
new_a = np.array(new_b)</code>
登录后复制

此代码读取 JSON 文件并将其转换回到列表 new_b 中。然后 np.array() 函数重建 NumPy 数组 new_a。

结论

通过将 NumPy 数组转换为 JSON 兼容的列表并使用适当的 JSON 序列化和反序列化方法,您可以有效地处理 Django 上下文变量中 NumPy 数据的存储和检索。这确保了数据可以在 Django 后端和前端之间安全高效地传输以进行渲染。

以上是如何在 Django 中序列化 JSON 的 NumPy 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

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