繁体   English   中英

Numpy矩阵乘法解释

[英]Numpy Matrix Multiplication Explanation

我正在做一些数学练习,但我不明白为什么我的 numpy 矩阵乘法不起作用。

所以我有:

t = np.array([[6,-1],[2,3]])
c = np.array([[1,1], [1,2]])
cinv = np.linalg.inv(c)

这给了我:

t:
   [[ 6 -1]
    [ 2  3]]
c:
   [[1 1]
    [1 2]]
cinv:
   [[ 2. -1.]
    [-1.  1.]]

现在,当我运行我的方程式时,我得到以下信息:

cinv*t*c
array([[12.,  1.],
       [-2.,  6.]])

这是不正确的。 我做了几次,正确的答案是 (5,0)(0,4)。 为什么乘法是由 position 而不是行 * 列进行的?

有人可以帮我解决我在这里做错的事情吗?

使用*进行元素乘法,而不是点积。 使用@进行点积乘法。 这是 Numpy 重载运算符的选择。 事实上,在最初的 Python 设计中, @被指定用于矩阵乘法,这可能就是这种情况的原因。

import numpy as np


t = np.array([[6,-1],[2,3]])
c = np.array([[1,1], [1,2]])
cinv = np.linalg.inv(c)

print(cinv@t@c)
"""
Result:
[[5. 0.]
 [0. 4.]]
"""

很多时候,我发现使用严格的函数而不是重载的运算符更容易阅读(尽管它们会很快变得拥挤)。

np.dot(A, B)A.dot(B)用作点积

这里有一些关于每个符号做什么的文档,明确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM