考虑NxK数组(用于分段方案)。 每行中只有一个元素应为'1'。所有其他人应该是'0'。这是为了特定的点乘法目的。
我需要的是有一个循环结构(可能是递归的,因为N或K都不是固定值),其中创建了所有可能的组合。
因此,对于3x2矩阵,我们将([1,0],[1,0],[1,0])
更改为([1,0],[1,0],[0,1])
,然后([1,0],[0,1],[1,0])
后跟([1,0],[0,1],[0,1])
,然后([0,1],[1,0],[1,0])
和([0,1],[1,0],[0,1])
和([0,1],[0,1],[1,0])
以及最后([0,1],[0,1],[0,1])
。
如果N是一个小的并且对于do循环是好的并不难。但是一旦它变大,我就无法理解它。
答案 0 :(得分:1)
试试这个:
from itertools import permutations,product
columns = 2
rows = 3
one_hot = [0]*(columns-1) +[1] # we are going to get all permutation of this one hot list
for i in product(set(permutations(one_hot,columns)),repeat=rows):
print(i)
输出:
((0, 1), (0, 1), (0, 1))
((0, 1), (0, 1), (1, 0))
((0, 1), (1, 0), (0, 1))
((0, 1), (1, 0), (1, 0))
((1, 0), (0, 1), (0, 1))
((1, 0), (0, 1), (1, 0))
((1, 0), (1, 0), (0, 1))
((1, 0), (1, 0), (1, 0))