numpy.dot函数和手动计算

问题描述 投票:0回答:1

我正在手工从雅可比矩阵计算 pcov,并理解其中的大部分内容,但很难理解 .dot 函数如何在 python 中的 numpy 中工作。我查看了手册并尝试手动解决它,但它与 python 的输出不匹配

这是原始雅可比矩阵:

 Jacobian: [[ 1.           1.           1.        ]
      [  4.           2.           0.99999998]
      [  9.00000004   3.           1.00000004]
      [  16.          4.           1.00000004]
      [  25.00000004  5.00000011   0.99999998]]

在这行代码之后:

precov = jacobian.T.dot(jacobian)

这是输出:

precov = [[979.00000266  225.00000313   55.00000039]
      [225.00000313   55.00000113   15.00000023]
      [ 55.00000039   15.00000023    5.00000007]]

根据我的理解,我期望上面的矩阵是原始矩阵和转置矩阵的点积,但是当我手动计算时,我得到:

[[3    7    13]
[7    21   43]
[13   43   101]]

有人对我遗漏或不理解的内容有任何见解吗?谢谢你!

python numpy matrix linear-algebra matrix-multiplication
1个回答
0
投票

为了近似,这是您的原始矩阵。

import numpy as np
A = np.arange(1, 6)[:, np.newaxis] ** np.arange(3)[::-1]
A
# array([[ 1,  1,  1],
#        [ 4,  2,  1],
#        [ 9,  3,  1],
#        [16,  4,  1],
#        [25,  5,  1]])

当你手工计算时,你必须做这样的事情:

A[:3, :3].dot(A[:3, :3].T)
# array([[ 3,  7, 13],
#        [ 7, 21, 43],
#        [13, 43, 91]])

NumPy 正在执行您告诉它执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.