为什么Numpy矩阵乘法运算称为“点”?

时间:2018-01-16 00:17:16

标签: python numpy

我对Numpy函数点的命名感到有点困惑:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.dot.html

似乎这是Numpy用于执行矩阵乘法的内容。然而,“点积”是不同的,它从两个向量产生单个标量:https://en.wikipedia.org/wiki/Dot_product

有人可以解决“dot”一词的这两种用法吗?

2 个答案:

答案 0 :(得分:3)

通常使用centrally positioned dot

编写乘法
A⋅B

这个名字几乎可以肯定来自这个符号。实际上有一个专门的代码点,它名为DOT OPERATOR,位于"数学运算符" unicode块:chr(0x22c5)。评论中提到这是

  

...用于乘法的表示

现在,关于这个评论:

  

然而," dot产品"是不同的东西,它从两个向量产生单个标量

他们并非完全不相关!在2-d矩阵乘法A⋅B中,结果中位置(i,j)处的元素来自 row i 的点积列j

答案 1 :(得分:1)

与线性代数相比,“点”或“内”产品在张量代数中具有扩展的定义。

对于nm维度张量NMN⋅M将具有维度(n + m - 2),作为“内部维度”(乘法后将N的最后一个维度和M的第一维度相加。

(另外,N.dot(M)实际上总结了N的最后一个维度和M的倒数第二维度,因为...原因。实际张量代数“点产品“功能降级为np.tensordot

对于n = m = 1(即两者都是1-d张量或“向量”),输出是0-d张量或“标量”,这相当于“标量”或“点” “来自线性代数的产品。

对于n = m = 2(即两者都是2-d张量或“矩阵”),输出是2-d张量或“矩阵”,并且该操作与“矩阵乘法”等效。

对于n = 2, m = 1,输出是1d张量或“向量”,这被称为(至少是我的教授)“映射”。

请注意,由于尺寸的顺序与内部产品的构造相关,

N.dot(M) == M.dot(N)
除非True,否则

通常不会n = m = 1 - 即仅在标量产品的情况下。