我想生成仅包含1和0且无重复的数组中所有排列的列表。我已经使用了代码
import itertools
import numpy as np
L = 3
M = 2
list1=list(itertools.product([0,1],repeat=L+M-1))
list1_filtered=np.asarray(list(filter(lambda x: sum(x)==M,list1)))
print(list1_filtered)
输出为
[[0 0 1 1]
[0 1 0 1]
[0 1 1 0]
[1 0 0 1]
[1 0 1 0]
[1 1 0 0]]
是否有任何方法可以使生成速度更快(即不使用过滤操作仅选择总和等于M的数组)?
是否可以创建一个从[0,0,1,1]开始递归给出所有其他行的迭代函数f?即
f([0,0,1,1]) = [0,1,0,1],
f([0,1,0,1]) = [0,1,1,0],
....