2017-04-14 13 views
2
私が欲しいもの
>>> a 
array([[1, 2], 
    [3, 4], 
    [5, 6]]) 
>>>b 
array([[1, 2], 
    [4, 3]]) 

とベクトルはnumpyの行列マイナス繰り返し行/列のインデックス

b[0,:]-=a[0,:], b[1,:]-=a[1,:], b[0,:]-=a[2,:] 

を行っている。しかし、次は動作しません:

>>> b[[0,1,0],:]-=a 
>>> b 
array([[-4, -4], # want [-5, -6] 
    [ 1, -1]]) 

これがすることなく達成することができる方法forループを使用していますか?

答えて

2

使用np.subtract.at -

np.subtract.at(b,[0,1,0],a) 

サンプル実行 -

In [15]: a 
Out[15]: 
array([[1, 2], 
     [3, 4], 
     [5, 6]]) 

In [16]: b 
Out[16]: 
array([[1, 2], 
     [4, 3]]) 

In [17]: np.subtract.at(b,[0,1,0],a) 

In [18]: b 
Out[18]: 
array([[-5, -6], 
     [ 1, -1]]) 
+0

私は.at' '知りませんでした - あなたに感謝!データをインプレースで変更する代わりに同じ結果を返すことは可能ですか? – MaxU

+0

@マックス私はそれがすべて可能であればまっすぐになることはないと恐れています:) – Divakar

+0

OK、ありがとう! :) – MaxU

関連する問題