Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python';R'的s等价物;s dput()函数_Python_R - Fatal编程技术网

Python';R'的s等价物;s dput()函数

Python';R'的s等价物;s dput()函数,python,r,Python,R,python中是否有类似于R中的函数?有几个选项可用于将python对象序列化为文件: json.dump()以json格式存储数据。它是非常可读和可编辑的,但只能存储列表、dict、字符串、数字、布尔值,因此没有复合对象。要使json模块可用,您需要先导入json pickle.dump()可以存储大多数对象 不太常见: shelve模块在一个DBM数据库中存储多个Python对象,主要作用类似于持久的dict marshal.dump():不确定何时需要它 IMO,json.dumps

python中是否有类似于R中的函数?

有几个选项可用于将python对象序列化为文件:

  • json.dump()
    以json格式存储数据。它是非常可读和可编辑的,但只能存储列表、dict、字符串、数字、布尔值,因此没有复合对象。要使
    json
    模块可用,您需要先导入json
  • pickle.dump()
    可以存储大多数对象
不太常见:

  • shelve
    模块在一个DBM数据库中存储多个Python对象,主要作用类似于持久的
    dict
  • marshal.dump()
    :不确定何时需要它

IMO,
json.dumps()
(注意s)甚至更好,因为它返回一个字符串,而不是
json.dump()
,后者要求您写入文件。

对于
pandas.DataFrame
打印(df.to_dict())
,如图所示这个答案主要关注
json.dump()
json.dumps()
以及如何将它们与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)
您可以通过先将其转换为列表来避免这种情况。请参见以下两个工作示例:

>>> a = np.arange(10)
>>> repr(a)
'array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])'
>>> d = dict(x=1, y=2)
>>> repr(d)
"{'x': 1, 'y': 2}"
>>> b = range(10)
>>> repr(b)
'range(0, 10)'
json.dumps()
json.dumps()
似乎最接近R的
dput()
,因为它允许您直接从控制台复制粘贴结果:

json.dumps(a.tolist()) # '[[1, 2, 3], [4, 5, 6], [7, 8, 9]]'
json.dump()
json.dump()
dput()
不同,但它仍然非常有用
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)
更多信息 关于避免“不可序列化”错误,请参见:

  • (有点不相关,但很有趣)


怎么还没有人提到repr()对我来说是个谜
repr()
几乎和R的
dput()完全一样。这里有几个例子:

>>> a = np.arange(10)
>>> repr(a)
'array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])'
>>> d = dict(x=1, y=2)
>>> repr(d)
"{'x': 1, 'y': 2}"
>>> b = range(10)
>>> repr(b)
'range(0, 10)'

也许是模块?您能提供更多关于如何使用此功能的详细信息吗?因为这是一个初学者的问题,请您澄清是否需要导入json或类似内容。我还在
pandas.DataFrame
上尝试了它,得到了
dump()缺少1个必需的位置参数:“fp”
…谢谢,作为标准
numpy.array
输出,获得矩阵中每行一行的正确参数是什么?我试图将
缩进
分隔符
参数传递给
json.dumps
,但没有成功。同意@JonasV,这是正确的答案