考虑一个 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 是一个很小的 no 并且 for do 循环就可以了,那么这并不困难。但一旦它变得很大,我就无法弄清楚了。
最佳答案
试试这个:
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))
关于python - 如何生成所有可能的 NXK 矩阵,其中每一行都是一个 onehot 向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42996504/