2017-04-14 66 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

@MaxU恐怕這不會是任何直接的,如果一切可能的話:) – Divakar

+0

好的,謝謝檢查! :) – MaxU