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

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

In [65]: result
Out[65]: 
array([[ 7,  8],
       [11, 12]])

我不想转置整个数组,添加然后转置回去。还有其他办法吗?

最佳答案

a[:,-1] 的末尾添加一个新轴,使其形状为 (2,1)。与 b 的加法将是 broadcast沿列(第二个轴)而不是行(默认)。

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 的轴(即沿其列)被广播。

关于python - Numpy:逐列向矩阵添加向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31587802/

相关文章:

python - Emacs 23 内置 python.el 缩进使用宽度为 4 的制表符中断

python - SQLAlchemy 多对一单向关系

python - Django 创建与现有外键数据库条目相对应的新条目

python - 方法的日志装饰器

python - NumPy 数据类型不理解

python - 如何在 python 中更改数据框中的列值?

pandas - 如何对具有偏移量的向量应用操作

python - 彩色 3D 图

python - numpy 检查所有元素是否为 False

Python-twilio api 错误?