我正在尝试编写一些代码(作为更大脚本的一部分)来开发长度 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)])
答案 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)]