在numpy中将向量与矩阵相加

3
假设矩阵是一个二维的numpy数组(MxN),向量是一个一维的数组(1xN)- 两者都有相同的N行。我需要将向量中同一行的元素值添加到矩阵的每一列中:
[[1 2 3],
 [4 5 6]]

[0.1 0.2]

result:

[[1.1 2.1 3.1],
 [4.2 5.2 6.2]]

1
通常我们将(M,N)数组描述为具有M行,N列,尽管行/列不是numpy术语的正式组成部分。 1d数组的形状为(M,),而不是(1,M)。要进行数学计算,您需要一个(M,1)形状的数组。 - hpaulj
2个回答

4
利用numpy广播,你可以执行a + b[:, None]
a = np.arange(1,7).reshape((2, 3))
b = np.array([0.1, 0.2])

a + b[:, None]
array([[1.1, 2.1, 3.1],
       [4.2, 5.2, 6.2]])

或者:

a + b[:, np.newaxis]
array([[1.1, 2.1, 3.1],
       [4.2, 5.2, 6.2]])

2
你可以使用 numpy.reshape(-1,1) 达到你想要的效果:
l1 = np.array([[1, 2, 3],[4, 5 , 6]])

l2 = np.array([0.1, 0.2]).reshape(-1,1)

l1+l2

输出:


array([[1.1, 2.1, 3.1],
       [4.2, 5.2, 6.2]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接