首页 > 解决方案 > Numpy:将n维向量与m维向量相加得到(n,m)矩阵

问题描述

假设我有数组 [1,2,3,4,5]。我想向它“添加”数组 [2,4,6,8] 所以我得到

[[3,5,7,9],
 [4,6,8,10],
 [5,7,9,11],
 [6,8,10,12],
 [7,9,11,13]]

(或其转置)。

这可能有一个功能,但我似乎找不到它,因为我不确定要搜索什么。

标签: numpyarray-broadcastingnumpy-ndarray

解决方案


正如@Divakar 所建议的,最好的方法是使用add.outer

a1 = np.array([1,2,3,4,5])
a2 = np.array([2,4,6,8])

np.add.outer(a1,a2)

但是您也可以明确地将您的数组广播a1到正确的形状,然后添加到a2

a1[:,None]+a2
# essentially equivalent to:
# a1.reshape(-1,1)+a2

两者都产生:

array([[ 3,  5,  7,  9],
       [ 4,  6,  8, 10],
       [ 5,  7,  9, 11],
       [ 6,  8, 10, 12],
       [ 7,  9, 11, 13]])

推荐阅读