如何计算 2 (1D) 向量之间的外和(不是乘积)

How to calculate the outer sum (not product) between 2 (1D) vectors

似乎 np.einsum 应该可以解决问题,但我没能成功。

一个例子:

a = np.arange(3)
b = np.arange(2)

#that computes the outer product
res = np.einsum('i,j->ij',a,b)

#The resulting array I am looking for is:
out = [[0, 1], [1, 2], [2, 3]]
#or its transpose. 

我一直在搜索,所有函数似乎都指向外积,而不是外和。 for 循环就可以完成这项工作,但我想要比这更有效的方法。

有谁知道如何使用 np.einsum 或其他方法实现外加和?

外和:

res = np.add.outer(a, b)
In [610]: a = np.arange(3)
     ...: b = np.arange(2)
     ...: 
In [611]: np.add.outer(a,b)
Out[611]: 
array([[0, 1],
       [1, 2],
       [2, 3]])

a(3,1)增加一个维度,我们可以使用加法运算符。查找 broadcasting 了解详情。

In [612]: a[:,None]+b
Out[612]: 
array([[0, 1],
       [1, 2],
       [2, 3]])