首页 > 解决方案 > @和*与python矩阵乘法有什么区别?

问题描述

我知道一个做一种矩阵乘法,另一个做另一种,但永远记不起区别。

正在做

>>> import numpy as np
>>> a = np.matrix([[1, 2],[3,4]])

>>> print(a * a)
[[ 7 10]
 [15 22]]

>>> print(a @ a)
[[ 7 10]
 [15 22]]

似乎给出了相同的答案,这让我感到困惑。

标签: pythonnumpy

解决方案


a * b是一个乘法运算符 - 它将返回元素a乘以b.

ab都是矩阵(具体由 定义np.matrix)时,结果将与@运算符相同。

a @ b是矩阵乘法(与向量一起使用时的点积)。如果您没有指定它a是一个矩阵并且使用了一个数组,a * a那么它将返回每个元素的a平方。


推荐阅读