【问题标题】:Issue with numpy matrix multiplicationnumpy矩阵乘法的问题
【发布时间】:2018-07-09 14:30:21
【问题描述】:

我正在尝试通过转置其中一个矩阵来将两个维度矩阵 (17,2) 相乘

这里是例子 p1

    p1 = [[ 0.15520622 -0.92034567]
 [ 0.43294367 -1.05921439]
 [ 0.7569707  -1.15179354]
 [ 1.08099772 -1.15179354]
 [ 1.35873517 -0.96663524]
 [-1.51121847 -0.64260822]
 [-1.32606018 -0.87405609]
 [-1.00203315 -0.96663524]
 [-0.67800613 -0.96663524]
 [-0.3539791  -0.87405609]
 [ 0.89583942  1.02381648]
 [ 0.66439155  1.3478435 ]
 [ 0.3866541   1.48671223]
 [ 0.15520622  1.5330018 ]
 [-0.07624165  1.5330018 ]
 [-0.3539791   1.44042265]
 [-0.58542698  1.20897478]]

这是另一个示例矩阵 p2

 p2 = [[ 0.20932473 -0.90029958]
 [ 0.53753779 -1.03849455]
 [ 0.88302521 -1.10759204]
 [ 1.24578701 -1.02122018]
 [ 1.47035383 -0.77937898]
 [-1.46628927 -0.69300713]
 [-1.29354556 -0.9521227 ]
 [-0.96533251 -1.03849455]
 [-0.63711946 -1.00394581]
 [-0.3089064  -0.90029958]
 [ 0.86575084  1.06897874]
 [ 0.55481216  1.37991742]
 [ 0.26114785  1.50083802]
 [ 0.03658102  1.51811239]
 [-0.1879858   1.50083802]
 [-0.46437574  1.37991742]
 [-0.74076568  1.08625311]]

我正在尝试使用 numpy 将它们相乘

import numpy

print(p1.T * p2)

但我收到以下错误

operands could not be broadcast together with shapes (2,17) (17,2) 

这是预期的矩阵乘法输出

[[11.58117944  2.21072324]
 [-0.51754442 22.28728876]]

我到底哪里错了

【问题讨论】:

  • 期望的输出是什么样的?附言将示例减少到 3 行(尽可能少)。
  • 结果应该是这样的 2X2
  • [[ 0.99879867 0.04900222] [-0.04900222 0.99879867]]
  • 你确定你需要乘法吗,我用np.dot回答了,但你的结果不是你用点积得到的。
  • 你之前是怎么定义p1p2的?与np.matrix?您如何从JSON 阅读它们? np.array? 2类数组的星乘是不同的。

标签: python python-3.x numpy


【解决方案1】:

矩阵乘法是用np.dot(p1.T,p2) 完成的,因为 A * B 表示矩阵元素乘法。

【讨论】:

    【解决方案2】:

    所以你应该使用np.dot:

    p1.T.dot(p2)
    

    【讨论】:

      【解决方案3】:

      很抱歉提出一个含糊的问题。最初,我从 numpy 矩阵中获取 p1 和 p2 值。后来我使用

      将它们作为优化列表存储在 json 文件中

      .tolist()

      方法并使用

      将其作为 numpy 数组读回

      numpy.array()

      显然是错误的方法..我将代码更改为使用

      读取 numpy 数组

      numpy.matrix()

      似乎可以解决问题的方法。希望这可以帮助某人

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        相关资源
        最近更新 更多