numpy:将n维向量添加到m维向量以获得(n,m)矩阵

时间:2018-11-23 16:59:29

标签: numpy numpy-broadcasting numpy-ndarray

假设我有数组[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]]

(或其转置)。

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

1 个答案:

答案 0 :(得分:0)

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

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

np.add.outer(a1,a2)

但是您也可以将a1数组显式broadcast设置为适当的形状,然后添加到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]])