Python与R的dput()函数等价

2024-10-01 02:18:42 发布

您现在位置:Python中文网/ 问答频道 /正文

python中是否有类似于R中的dput() function的函数?在


Tags: 函数functiondput
3条回答

这个答案集中在json.dump()和{}以及如何将它们与numpy数组一起使用。如果您尝试这样做,Python将返回一个错误,指出ndarray不是JSON可序列化的:

import numpy as np
import json

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
json.dumps(a)
TypeError: Object of type 'ndarray' is not JSON serializable

您可以通过先将其转换为列表来避免这种情况。下面是两个工作示例:

json.dumps()

json.dumps()似乎最接近R的dput(),因为它允许您直接从控制台复制粘贴结果:

^{pr2}$

json.dump()

{{cd5>还是很有用的。json.dump()将把你的对象编码成一个json文件。在

# Encode:
savehere = open('file_location.json', 'w')
json.dump(a.tolist(), savehere)

你可以在其他地方解码:

# Decode:
b = open('file_location.json', 'r').read()   # b is '[[1, 2, 3], [4, 5, 6], [7, 8, 9]]'
c = json.loads(b)

然后您可以再次将其转换回numpy数组:

c = np.array(c)

更多信息

有关避免“不可序列化”错误,请参阅:

将Python对象序列化为文件有几个选项:

  • json.dump()以JSON格式存储数据。它具有很强的可读性和可编辑性,但只能存储列表、dict、字符串、数字、布尔值,因此没有复合对象。您需要在import json之前使json模块可用。在
  • pickle.dump()可以存储大多数对象。在

不常见:

  • shelve模块将多个Python对象存储在一个DBM数据库中,主要表现为一个持久的dict。在
  • marshal.dump():不知道什么时候你需要它。在

对于pandas.DataFrameprint(df.to_dict()),如here

相关问题 更多 >