我正在使用此代码进行单热编码值:
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]]
从第一行选择第一列和第二列,从第二行选择第三列,但它不起作用。
答案 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])