Python Numpy:按列向矩阵添加向量

Python Numpy:按列向矩阵添加向量,python,numpy,Python,Numpy,这是行加法。如何按列添加它们以获得 a Out[57]: array([[1, 2], [3, 4]]) b Out[58]: array([[5, 6], [7, 8]]) In[63]: a[:,-1] + b Out[63]: array([[ 7, 10], [ 9, 12]]) 我不想转置整个数组,先添加,然后再转置回来。还有其他方法吗?在a[:,-1]的末尾添加一个新轴,使其具有形状(2,1)。然后,使用b进行的添加将沿着列(第

这是行加法。如何按列添加它们以获得

a
Out[57]: 
array([[1, 2],
       [3, 4]])

b
Out[58]: 
 array([[5, 6],
       [7, 8]])

In[63]: a[:,-1] + b
Out[63]: 
array([[ 7, 10],
       [ 9, 12]])

我不想转置整个数组,先添加,然后再转置回来。还有其他方法吗?

a[:,-1]
的末尾添加一个新轴,使其具有形状
(2,1)
。然后,使用
b
进行的添加将沿着列(第二个轴)而不是行(默认值)


a[:,-1]
具有形状
(2,)
<代码>b具有形状
(2,2)
。默认情况下,广播会在左侧添加新轴。因此,当NumPy计算
a[:,-1]+b
时,其广播机制导致
a[:,-1]
的形状更改为
(1,2)
,并广播到
(2,2)
,沿其长度轴1(即沿其行)的值将被广播

相反,
a[:,-1][:,np.newaxis]
具有形状
(2,1)
。因此,广播将其形状更改为
(2,2)
,其值沿其长度轴1(即沿其列)进行广播。

注DSM(已删除)的答案显示了生成形状切片的更快方法
(2,1)
a[:,-1,np.newaxis]
而不是
a[:,-1][:,np.newaxis]
。阅读下面的文章,看看这是为什么。很酷。
In [65]: result
Out[65]: 
array([[ 7,  8],
       [11, 12]])
In [47]: b + a[:,-1][:, np.newaxis]
Out[47]: 
array([[ 7,  8],
       [11, 12]])