当前位置: 首页 > 面试题库 >

R Python中的expand.grid()函数

叶琦
2023-03-14
问题内容

是否有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函数的参