我需要bool数组的所有排列,下面的代码效率很低,但能完成我想要的工作:
from itertools import permutations import numpy as np n1=2 n2=3 a = np.array([True]*n1+[False]*n2) perms = set(permutations(a))
然而,它的效率很低,而且对于长数组来说是失败的。有没有更有效的实现?
kknvjkwl1#
如何对真值的指数组合进行采样:
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]]
1条答案
按热度按时间kknvjkwl1#
如何对真值的指数组合进行采样:
输出量: