2017-09-06 21 views
0

numpy構造体に値を代入するときに問題が発生します。たとえば、numpyの配列Src(N*K)と、0〜K-1の値を持つインデックス配列Index(N*1)があるとします。私の仕事はSrcの値をインデックスに従って配列Target(N*1)に代入することです。ループのない配列割り当て

としてループに使用している素朴な方法:

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

しかし、私は、forループせずにこのタスクを実行する他のエレガントな方法があるはずと信じています。それで誰も私を助けることができますか?

答えて

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