如果我有 x.shape = (n,) 和 y.shape = (n,),则 x @ y 返回它们的点积,而不是它们的外积。我想知道这是否有一些根本原因,或者只是为了方便。
谢谢。
最佳答案
函数np.matmul
是在Python引入@
运算符时添加的。
新函数的设计行为与 np.dot
类似,也是合理的。
那么为什么np.dot(向量, 矢量)
执行内积呢?
在@
之前,函数np.dot
用于在numpy中执行矩阵代数。
实际上,线性代数中的向量不是一维数组,而是其中一个维度设置为 1 的矩阵。为了将一维数组乘以矩阵,必须以某种方式将前者提升为行向量或列向量。
我们这里有 3 个案例:
- 向量乘矩阵,一维数组提升为行向量(1xN)以使运算有效
- 矩阵乘向量,一维数组提升为列向量 (Nx1)
- 逐个向量,左操作数提升为行向量,右操作数提升为列向量,如前面的两种情况
作为最后一种情况的结果,我们在两个向量之间有一个正常的内积。 这个策略既合乎逻辑又实用,因为内积的使用更频繁。
关于python - 为什么两个 numpy (n,) 向量的矩阵 @product 是点积,而不是外积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62219910/