NumPy:将单热编码概括为k-hot编码

时间:2018-02-06 12:30:45

标签: numpy

我正在使用此代码进行单热编码值:

idxs = np.array([1, 3, 2])
vals = np.zeros((idxs.size, idxs.max()+1))
vals[np.arange(idxs.size), idxs] = 1

但是我想将它概括为k-hot编码(其中vals的形状相同,但每行可以包含k个)。

不幸的是,我无法弄清楚如何从每一行索引多个cols。我尝试vals[0:2, [[0, 1], [3]]从第一行选择第一列和第二列,从第二行选择第三列,但它不起作用。

1 个答案:

答案 0 :(得分:1)

它被称为advanced-indexing

  

从第一行选择第一列和第二列,从第二行选择第三列

您只需要在单独的iterables(元组,列表)中传递相应的行和列:

In [9]: a
Out[9]: 
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [10]: a[[0, 0, 1],[0, 1, 3]]
Out[10]: array([0, 1, 8])