【问题标题】:Sum vector with matrix in numpy用numpy中的矩阵求和向量
【发布时间】:2021-09-14 00:05:04
【问题描述】:

假设矩阵是 2d numpy (MxN) 数组,向量是 1d 数组 (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]]

【问题讨论】:

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

标签: python numpy


【解决方案1】:

你可以使用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]])

【讨论】:

    【解决方案2】:

    利用numpy broadcasting,你可以做到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]])
    

    【讨论】:

      猜你喜欢
      • 2017-11-18
      • 2023-01-11
      • 2013-03-22
      • 1970-01-01
      • 2021-03-20
      • 2016-01-29
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多