Python中是否有类似于R中dput()函数的函数?
这个答案主要关注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)
TypeError: Object of type 'ndarray' is not JSON serializable
您可以通过先将其转换为列表来避免这种情况。请参见以下两个工作示例:
json.dumps()
似乎最接近R的dput()
,因为它允许您直接从控制台复制粘贴结果:
json.dumps(a.tolist()) # '[[1, 2, 3], [4, 5, 6], [7, 8, 9]]'
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)
关于避免“不可序列化”错误,请参见:
>
如何使类json序列化(有点不相关,但很有趣)
将Python对象序列化为文件有几个选项:
json.dump()
以json格式存储数据。它是非常可读和可编辑的,但只能存储列表、dict、字符串、数字、布尔值,因此没有复合对象。要使json
模块可用,您需要先导入json。pickle.dump()
可以存储大多数对象不太常见:
Shelve
模块将多个Python对象存储在DBM数据库中,主要表现为持久的dicing
。marshal.dump()
:不知道你什么时候需要它。对于pandas.DataFrame
,打印(df.to_dict())
,如下所示
问题内容: python中是否有类似于R中的dput()函数的函数? 问题答案: 有几种将Python对象序列化为文件的选项: 以JSON格式存储数据。它是非常可读和可编辑的,但是只能存储列表,字典,字符串,数字,布尔值,因此没有复合对象。您需要先使模块可用。 可以存储大多数对象。 不常见: 该模块将多个Python对象存储在DBM数据库中,大多数情况下就像一个persistent 。 :不确定何
问题内容: 是否有Python函数类似于R中的expand.grid()函数?提前致谢。 (编辑)以下是此R函数的说明和示例。 (EDIT2)下面是rpy包的示例。我想获得相同的输出对象,但不使用R: 编辑02/09/2012: 我真的 迷上 了Python。Lev Levitsky在他的答案中给出的代码对我不起作用: 但是,似乎已安装itertools模块(键入不会返回任何错误消息) 问题答案:
有没有类似于R中expand.grid()函数的Python函数?提前谢谢。 (编辑)下面是此R函数的说明和示例。 下面是rpy包的示例。我想得到相同的输出对象,但不使用R: 编辑02/09/2012:我真的迷路了Python。列夫·列维斯基在回答中给出的代码对我不起作用: 但是,似乎已安装itertools模块(从itertools导入中键入不会返回任何错误消息)
在Python中有没有我可以做的等价操作?
我尝试使用以下R语句,并使用NumPy将其转换为Python: 有与which()等价的Python吗?这里,x是矩阵tmp中的行,k对应于另一个矩阵中的列数。 之前,我尝试了以下Python代码,并收到一个值错误(操作数无法与形状一起广播):
问题内容: 是否有与的函数等效的也就是说,给定多个相同长度的数组,将创建一个成对的数组。 例如,如果我有三个看起来像这样的数组: 输出数组应为: 问题答案: 这是一个时髦的Ecmascript 6版本: 相当于插图。到: (并且指出ES6具有可变参数语法,因此以下函数定义将类似于python,但请参见下文的免责声明…这将不是其自身的逆,因此)将不相等x;尽管正如Matt Kramer指出的那样例如