Numpy矩阵减去具有重复行/列索引的向量

时间:2017-04-14 10:29:50

标签: python numpy

>>> a
array([[1, 2],
     [3, 4],
     [5, 6]])
>>>b
array([[1, 2],
     [4, 3]])

我想做的是

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循环的情况下实现这一目标?

1 个答案:

答案 0 :(得分: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]])