相关疑难解决方法(0)

如何在Python中生成列表的所有排列

如何在Python中生成列表的所有排列,与该列表中的元素类型无关?

例如:

permutations([])
[]

permutations([1])
[1]

permutations([1, 2])
[1, 2]
[2, 1]

permutations([1, 2, 3])
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
Run Code Online (Sandbox Code Playgroud)

python algorithm permutation combinatorics python-2.5

543
推荐指数
18
解决办法
58万
查看次数

使用numpy构建两个数组的所有组合的数组

我试图在6参数函数的参数空间上运行以研究它的数值行为,然后再尝试做任何复杂的事情,所以我正在寻找一种有效的方法来做到这一点.

给定6-dim numpy数组作为输入,我的函数采用浮点值.我最初尝试做的是:

首先,我创建了一个函数,它接受2个数组并生成一个数组,其中包含来自两个数组的所有值组合

from numpy import *
def comb(a,b):
    c = []
    for i in a:
        for j in b:
            c.append(r_[i,j])
    return c
Run Code Online (Sandbox Code Playgroud)

然后我习惯reduce()将它应用于相同数组的m个副本:

def combs(a,m):
    return reduce(comb,[a]*m)
Run Code Online (Sandbox Code Playgroud)

然后我评估我的功能如下:

values = combs(np.arange(0,1,0.1),6)
for val in values:
    print F(val)
Run Code Online (Sandbox Code Playgroud)

这有效,但它太慢了.我知道参数的空间很大,但这不应该太慢.在这个例子中我只抽取了10 6(一百万)个点,并且创建数组花了超过15秒values.

你知道用numpy做这个更有效的方法吗?

F如果有必要,我可以修改函数获取它的参数的方式.

python arrays numpy multidimensional-array

132
推荐指数
9
解决办法
10万
查看次数