【问题标题】:matrix - vector multiplication in python (numpy)矩阵 - python 中的向量乘法(numpy)
【发布时间】:2015-07-29 14:06:02
【问题描述】:

我有一个向量(形状(4,1))和一个矩阵(形状(4,4))

我正在尝试使用 * 运算符将它们相乘,该运算符在矩阵对象上使用时是矩阵乘法,但出现值错误:

ValueError: shapes (4,1) and (4,4) not aligned: 1 (dim 1) != 4 (dim 0)

我该怎么做?我了解如何手动执行此操作,并认为使用 numpy 会相当简单

【问题讨论】:

    标签: python numpy matrix-multiplication


    【解决方案1】:

    请记住,对于矩阵乘法,第一个矩阵的第二维必须等于第二个矩阵的第一维。因此,无法执行 4x1 向量和 4x4 矩阵的矩阵乘法。

    可以做的是转置向量(使用myvector.T),这样你就得到一个 1x4 向量并将 那个与你的 4x4 矩阵相乘。

    或者,您可以将右侧的向量相乘。

    【讨论】:

      【解决方案2】:
      >>> v1 = numpy.arange(1,5).reshape(1,4)
      >>> v1
      array([[1, 2, 3, 4]])
      >>> v1.shape
      (1, 4)
      >>> v2 = numpy.ones((4,4))
      >>> v2
      array([[ 1.,  1.,  1.,  1.],
             [ 1.,  1.,  1.,  1.],
             [ 1.,  1.,  1.,  1.],
             [ 1.,  1.,  1.,  1.]])
      >>> v2.shape
      (4, 4)
      >>> v3 = v1*v2
      >>> v3
      array([[ 1.,  2.,  3.,  4.],
             [ 1.,  2.,  3.,  4.],
             [ 1.,  2.,  3.,  4.],
             [ 1.,  2.,  3.,  4.]])
      >>> 
      

      【讨论】:

        【解决方案3】:

        您不能将 4x1 向量与 4x4 矩阵相乘。

        您应该做相反的事情,将矩阵与向量相乘。或者转置向量。

        【讨论】:

          猜你喜欢
          • 2023-01-11
          • 1970-01-01
          • 2014-03-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-30
          相关资源
          最近更新 更多