如何在类似于点积的 numpy 中获得“点加法”?

Abs*_*Abs 4 python arrays numpy python-3.x numpy-ufunc

我对 numpy 有点陌生,并且正在努力解决这个问题。我有两个二维 numpy 数组:

array1 = [a1, a2, ..., an]
array2 = [b1, b2, ..., am]
Run Code Online (Sandbox Code Playgroud)

a1, a2, b1, 和b2都是一维数组,其中正好有 100 个浮点数。然而,array1array2具有不同的长度。所以array1和分别array2具有形状(n, 100)(m, 100),其中nm是任意长度。

我想在它们之间执行某种修改后的点积,以便我可以输出以下矩阵:

array([[ a1+b1, a1+b2, a1+b3, ...],
       [ a2+b1, a2+b2, a2+b3, ...],
       [ a3+b1, a3+b2, a3+b3, ...],
       [...]])
Run Code Online (Sandbox Code Playgroud)

我明白这np.dot(array1, array2.T)让我非常接近。它只是给我a1•b1而不是a1+b1在所需的输出数组中。

使用 numpy 获取所需数组的最有效的计算方法是什么?提前致谢!

Ehs*_*san 6

使用np.outer用于此目的的 ufunc:

np.add.outer(array1,array2)
Run Code Online (Sandbox Code Playgroud)

例子:

array1 = np.array([1,2,3])
array2 = np.array([1,2])
Run Code Online (Sandbox Code Playgroud)

输出:

[[2 3]
 [3 4]
 [4 5]]
Run Code Online (Sandbox Code Playgroud)