首页 > 解决方案 > Numpy:将两个一维数组相加得到一个二维数组

问题描述

假设我有两个 1D 数组(a 和 b),我想将它们按元素求和以创建一个 2D 数组(c)。二维数组的维度为 (n,m),其中 n 是 a 的长度,m 是 b 的长度。精确的关系为:c[i][j] = a[i]+b[j],其中 i 从 0 运行到 n-1,j 从 0 运行到 m-1。例如,考虑以下代码

a = np.asarray([1,2,3])
b = np.asarray([1,2])
c = a+b

这段代码给了我广播错误。目标是得到 c = [[2,3],[3,4],[4,5]]。显然我们可以使用循环来获取 c 的每个元素,但我正在寻找一种方法来做到这一点而无需通过循环。

标签: arraysnumpy

解决方案


为了

(u + v).shape == (3, 2)

, 我们需要:

u.shape == (3, 1)
v.shape == (1, 2)

因此,最简单的方法是创建一个新轴:

a = np.array([1, 2, 3])
b = np.array([1, 2])
c = a[..., np.newaxis] + b[np.newaxis, ...]

推荐阅读