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

cczfrluj  于 2023-03-02  发布在  Python
关注(0)|答案(1)|浏览(104)

我正在尝试写一些代码(作为一个更大的脚本的一部分)来开发长度为 n 的numpy数组,我可以用它来以所有可能的方式改变长度为 n 的输入列表的符号,我正在尝试产生长度为 n 的1和-1的所有可能的排列。
如果我使用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)])
xxhby3vn

xxhby3vn1#

也许这就是你想要的?

>>> 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)]

相关问题