2017-09-06 100 views
0

將值指定給numpy結構時遇到問題。例如,假設我有一個numpy數組Src(N*K),並且索引數組Index(N*1)的值在0〜K-1之間。我的任務是根據索引將Src的值分配給數組Target(N*1)不帶for循環的數組賦值

一個天真的方法是使用for循環:

for i in xrange(Index.shape[0]): 
    Target[i,:] = Src[i,Index[i]] 

不過,我認爲應該有不執行的循環這個任務其他優雅的方式。那麼任何人都可以幫助我?

回答

0

您可以做:

>>> Target = np.zeros((4, 4)) 
>>> Src = np.ones((4, 4)) 
>>> Index = np.array([1, 2]) 
>>> Target[i, :] = Src[i, Index, None] 
>>> Target 
array([[ 1., 1., 1., 1.], 
     [ 1., 1., 1., 1.], 
     [ 0., 0., 0., 0.], 
     [ 0., 0., 0., 0.]])