按元素操作的运算符与使用 Numpy 在矩阵上操作的运算符有什么区别?

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

Numpy docs讲述了乘积运算符和矩阵运算符之间的区别。

与许多矩阵语言不同,乘积运算符 * 运算 NumPy 数组中的元素。矩阵乘积可以使用 @ 运算符(在 python >=3.5 中)或点

问题:按元素作用的运算符与在矩阵上作用的运算符有什么区别?

这会如何改变结果?

python python-3.x numpy operators
2个回答
1
投票

假设我们有两个矩阵:

a = [ p q ]
    [ r s ]

b = [ w x ]
    [ y z ]

逐元素乘积意味着:

a * b = [ p*w  q*x ]
        [ r*y  s*z ]

矩阵乘积意味着:

a @ b = [ (p*w)+(q*y)  (p*x)+(q*z) ]
        [ (r*w)+(s*y)  (r*x)+(s*z) ]

当数学、机器学习等文献谈到“矩阵乘法”时,这个矩阵乘积就是这个意思。 请注意,

a @ b
b @ a
不同。


0
投票

这是绝对正确的,但我们可以在这里看另一个例子https://matlabacademy.mathworks.com/R2024a/portal.html?course=gettingstarted#chapter=6&lesson=1§ion=1

正如我们所见, z = [3 4] * [10 20] 给出了一个“错误生成的结果”,因为内部维度不明确,为了解决这个问题,我们使用“.”,即“逐元素”乘法”。 例如,z = [3 4] . [10 20] 给出 z = 30 80 与仅使用“*”运算符的错误结果不同。

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