首页 > 解决方案 > 如何在类似于点积的numpy中获得“点加法”?

问题描述

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

array1 = [a1, a2, ..., an]
array2 = [b1, b2, ..., am]

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, ...],
       [...]])

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

对我来说,用 numpy 获得所需数组的最高效的计算方式是什么?提前致谢!

标签: pythonarrayspython-3.xnumpynumpy-ufunc

解决方案


np.outer为此目的使用ufunc:

np.add.outer(array1,array2)

例子:

array1 = np.array([1,2,3])
array2 = np.array([1,2])

输出:

[[2 3]
 [3 4]
 [4 5]]

推荐阅读