python - 如何生成所有可能的 NXK 矩阵,其中每一行都是一个 onehot 向量

标签 python python-3.x numpy

考虑一个 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/

相关文章:

python - 如何用 Python 中的空格替换文本中的特殊字符?

python - 从 CSV 文件 Python 制作对象

python - 将字符串分成 block ,然后将这些 block 传递给一个新对象。 python 3

python - “系列”对象没有属性 'applymap'

python - 从 Pandas 数据框中获取数组的子集

python - python 中 numpy 数组的 len()

python - 在Python中捕获403禁止访问

python - 在 Tkinter 中更改帧的 Tab 键顺序

python - 为什么角色类和animation_dir上有一个AttributeError报告,尽管它已经明确定义了?

python - 属性错误 : exp in python, 适用于某些功能而不适用于其他功能