python - 为什么两个 numpy (n,) 向量的矩阵 @product 是点积,而不是外积?

标签 python numpy

如果我有 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/

相关文章:

python - 发送带有机械化和请求的 POST。

python-3.x - 保存 'float' numpy 图像

python - Fisher在Python中的线性判别式

python - Selenium 只点击一次链接,再次调用 click() 返回错误

python - 如何使用 mraa 将 lsm9ds1 连接到 respeaker?

python - SQLite:使用一个文件与多个文件

python - 如何在列表中找到最接近的值,其中 x > numpy 数组中每个值的值而不循环

python - <unknown> 不是 numpy 数组错误

python - randomkit.h 发生了什么或如何迁移到最新的 numpy.random c/cython api

python - 如何使用 cythonize 启用 `--embed`?