2016-08-02 108 views
3

我有以下指数[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])更新特定的numpy矩阵列

回答

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