python-更新特定的numpy矩阵列

我有以下与我的目标索引相对应的索引列表[2 4 3 4].我正在使用以下代码目标行= np.zeros((features.shape [0],5))创建零矩阵.我想知道是否可以通过切片来一次更新所有特定索引并将这些值设置为1而无需for循环的方式,理想情况下矩阵看起来像
([0,0,1,0,0],[0,0,0,0,1],[0,0,0,1,0],[0,0,0,0,1])

最佳答案

我相信你可以做这样的事情:

targets = np.zeros((4, 5))
ind = [2, 4, 3, 4]
targets[np.arange(0, 4), ind] = 1

结果如下:

array([[ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  0.,  1.]])