如何用NumPy实现二维数组行与一维数组元素对应相加?
NumPy实现指定数组相加需求
当然可以实现,核心是利用NumPy的广播机制,只需要将数组b转换为列向量,就能让它和a按行对应元素完成相加操作。
具体代码示例
import numpy as np # 定义原始数组 a = np.array([[1, 2], [100, 200]]) b = np.array([10, 20]) # 将b转换为列向量,形状变为(2, 1) b_col = b.reshape(-1, 1) # 也可以用 b[:, np.newaxis] 实现同样效果 # 执行相加操作 result = a + b_col print(result) # 输出结果: # [[ 11 12] # [120 220]]
原理说明
NumPy的广播规则允许形状兼容的数组进行元素级运算:
- 原始
a的形状是(2, 2),转换后的b_col形状是(2, 1) - 运算时
b_col会自动广播为(2, 2)的数组,即每一行重复对应元素两次:[[10,10], [20,20]] - 最终和
a对应位置元素相加,正好得到目标结果。
内容的提问来源于stack exchange,提问作者wowonline
相关产品推荐
相关产品推荐

