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]])
Run Code Online (Sandbox Code Playgroud)
这是行添加.如何将列添加到列中以获取
In [65]: result
Out[65]:
array([[ 7, 8],
[11, 12]])
Run Code Online (Sandbox Code Playgroud)
我不想转置整个数组,添加然后转置回来.还有其他方法吗?
unu*_*tbu 13
添加一个newaxis到最后a[:,-1],以便它有形状(2,1).b然后添加将沿着列(第二轴)而不是行(这是默认值)广播.
In [47]: b + a[:,-1][:, np.newaxis]
Out[47]:
array([[ 7, 8],
[11, 12]])
Run Code Online (Sandbox Code Playgroud)
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的轴(即沿其列)的值进行广播.