我需要bool数组的所有排列,下面的代码效率很低,但是做我想做的事情:
from itertools import permutations
import numpy as np
n1=2
n2=3
a = np.array([True]*n1+[False]*n2)
perms = set(permutations(a))然而,这是低效的,并失败的长数组。是否有更有效的实施?
发布于 2022-11-29 10:16:48
那么对真值的指数组合进行抽样呢:
from itertools import combinations
import numpy as np
a = np.arange(n1+n2)
out = [np.isin(a, x).tolist() for x in combinations(range(n1+n2), r=n1)]输出:
[[True, True, False, False, False],
[True, False, True, False, False],
[True, False, False, True, False],
[True, False, False, False, True],
[False, True, True, False, False],
[False, True, False, True, False],
[False, True, False, False, True],
[False, False, True, True, False],
[False, False, True, False, True],
[False, False, False, True, True]]https://stackoverflow.com/questions/74612253
复制相似问题