如何在Python中使用替换生成排列

时间:2017-09-16 14:58:34

标签: python-2.7 numpy itertools

我正在尝试编写一些代码(作为更大脚本的一部分)来开发长度 n 的numpy数组,我可以使用它来更改长度为的输入列表的符号n ,以各种可能的方式。 我试图产生1和-1长度 n 的所有可能的排列。

如果我使用itertools.permutations,则不会接受大于2的重复长度,因为不允许重复。如果我使用itertools.combinations_with_replacement,则不会产生所有排列。我需要" permutations_with_replacement"。 我尝试使用itertools.product,但我无法让它工作。

这是我到目前为止的代码(n是未知数字,具体取决于输入列表的长度)。

import numpy as np
import itertools

ones = [-1, 1]
multiplier = np.array([x for x in itertools.combinations_with_replacement(ones, n)])

1 个答案:

答案 0 :(得分:1)

也许这就是你想要的?

>>> import itertools
>>> choices = [-1, 1]
>>> n = 3
>>> l = [choices] * n
>>> l
[[-1, 1], [-1, 1], [-1, 1]]
>>> list(itertools.product(*l))
[(-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]