[英]Numpy: add a vector to matrix column wise
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]])
这是行添加。 如何将列添加到列中以获取
In [65]: result
Out[65]:
array([[ 7, 8],
[11, 12]])
我不想转置整个数组,添加然后转置回来。 还有其他方法吗?
a[:,-1]
的末尾添加newaxis,使其具有形状(2,1)
。 然后用b
将沿着列(第二轴)而不是行(这是默认值) 广播 。
In [47]: b + a[:,-1][:, np.newaxis]
Out[47]:
array([[ 7, 8],
[11, 12]])
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的轴(即,沿其列)被广播。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.