假设我有两个一维数组(a和b),我想逐个元素地对它们求和,以创建一个二维数组(c)。2D数组的维数为(n,m),其中n是a的长度,m是b的长度。精确的关系是: ci = ai+bj,其中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的每个元素,但我正在寻找一种不需要循环的方法。
发布于 2020-05-19 16:27:34
为
(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, ...]
发布于 2020-05-19 16:42:42
另一种方法是使用另一个数组的长度对数组进行tile
。请注意,我采用了np.tile(b, (len(a), 1))
与.T
的转置。
import numpy as np
a = np.asarray([1,2,3])
b = np.asarray([1,2])
c = np.tile(a, (len(b), 1)) + np.tile(b, (len(a), 1)).T
希望能有所帮助
https://stackoverflow.com/questions/61886419
复制相似问题