NumPy:将一个热编码推广到k-hot编码
我正在使用此代码对一个热编码值进行编码:NumPy:将一个热编码推广到k-hot编码,numpy,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个) 不幸的是,我不知道如何为每行中的多个col建立索引。我尝试了vals[0:2,[[0,1],[3]]从第一行选择第一列和第二列,从第二行选择第三列,但它不起作用。调
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个)
不幸的是,我不知道如何为每行中的多个col建立索引。我尝试了vals[0:2,[[0,1],[3]]
从第一行选择第一列和第二列,从第二行选择第三列,但它不起作用。调用它
从第一行选择第一列和第二列,从第二行选择第三列
您只需要在单独的ITerable(元组,列表)中传递相应的行和列:
最后一个问题–NumPy是否有任何功能,可以将
[[1,3],[2],[0,2]
转换为[0,0,1,2,2]
?@user1518183否。这背后的逻辑是什么?对,这没有任何意义。
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])