是否有Python函数类似于R中的expand.grid()函数?提前致谢。
(编辑)以下是此R函数的说明和示例。
Create a Data Frame from All Combinations of Factors
Description:
Create a data frame from all combinations of the supplied vectors
or factors.
> x <- 1:3
> y <- 1:3
> expand.grid(x,y)
Var1 Var2
1 1 1
2 2 1
3 3 1
4 1 2
5 2 2
6 3 2
7 1 3
8 2 3
9 3 3
(EDIT2)下面是rpy包的示例。我想获得相同的输出对象,但不使用R:
>>> from rpy import *
>>> a = [1,2,3]
>>> b = [5,7,9]
>>> r.assign("a",a)
[1, 2, 3]
>>> r.assign("b",b)
[5, 7, 9]
>>> r("expand.grid(a,b)")
{'Var1': [1, 2, 3, 1, 2, 3, 1, 2, 3], 'Var2': [5, 5, 5, 7, 7, 7, 9, 9, 9]}
编辑02/09/2012: 我真的 迷上 了Python。Lev Levitsky在他的答案中给出的代码对我不起作用:
>>> a = [1,2,3]
>>> b = [5,7,9]
>>> expandgrid(a, b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in expandgrid
NameError: global name 'itertools' is not defined
但是,似乎已安装itertools模块(键入from itertools import *
不会返回任何错误消息)
这是一个提供与您所需输出类似的示例:
import itertools
def expandgrid(*itrs):
product = list(itertools.product(*itrs))
return {'Var{}'.format(i+1):[x[i] for x in product] for i in range(len(itrs))}
>>> a = [1,2,3]
>>> b = [5,7,9]
>>> expandgrid(a, b)
{'Var1': [1, 1, 1, 2, 2, 2, 3, 3, 3], 'Var2': [5, 7, 9, 5, 7, 9, 5, 7, 9]}
差异与以下事实有关:在itertools.product
最右边的元素在每次迭代中都会前进。product
如果重要,您可以通过巧妙地对列表进行排序来调整功能。
有没有类似于R中expand.grid()函数的Python函数?提前谢谢。 (编辑)下面是此R函数的说明和示例。 下面是rpy包的示例。我想得到相同的输出对象,但不使用R: 编辑02/09/2012:我真的迷路了Python。列夫·列维斯基在回答中给出的代码对我不起作用: 但是,似乎已安装itertools模块(从itertools导入中键入不会返回任何错误消息)
Restricted Python implementation using Python bindings for LLVM This experimental projects aims to provide efficient code generation for Restricted Python (RPython). rPython是Python的一个子集,虽然rPython不是完整的
我甚至不确定如何给它一个更好的,而且不明显重复的类型,标题,但我认为这是一个关于expand.grid的不同问题。 所需输出: 尝试: > 给出单行 请求:有人能指出如何将这份4个变量的列表扩展成其中的1、2、3、4的每一个组合,没有重复项吗?
当我尝试导入诸如“pymc3”或“theano”之类的模块时,rPython或pythoniner无法定位这些模块,即使我已经安装了它们。我使用的是Ubuntu 16.04、R3.4.2和python 3.5.2 这两个包似乎无法找到某个文件夹,但是在我将路径追加到sys.path后,它就不起作用了,sys.path包含了我需要的所有包,通过使用以下命令: 结果似乎也不错: ['''/usr/li
给定一个字符串,返回子字符串长度2在该字符串中出现的次数计数,并作为该字符串的最后2个字符,因此“hixxxhi”产生1(我们不计算结束子字符串)。 我在其中一个网站上发现了这个问题(https://codingbat.com/prob/p145834). 网站上对上述问题的回答如下: 我对下面提到的代码行有疑问 现在,我知道这段代码正在提取字符串“str”的最后两个字母。我感到困惑的是变量名。正
有没有可能创建一个函数,它将lambda函数作为参数(每个lambda函数使用参数),然后返回一个具有单个参数的新函数,并返回所有lambda函数的乘积? 以下是我的非工作示例: 所以本质上,你有一个函数,它需要4个lambda函数,每个函数使用参数。例如,的参数可以类似于。 然后返回一个名为的新函数,该函数的输出是所有lambda函数的乘积,并且有一个参数,该参数传递到的每个lambda函数的参