更新特定的numpy矩阵列

时间:2016-08-02 03:19:47

标签: python numpy

我有以下与我的目标索引相对应的索引[2 4 3 4]列表。我使用以下代码行targets = 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])

1 个答案:

答案 0 :(得分:4)

我相信你可以这样做:

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.]])