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