为什么Numpy矩阵乘法操作被称为“点乘”?

7

为什么要给函数命名?你认为有答案吗?最可能的是你喜欢它,函数的名称不必有任何依据,如果你想知道原因,最好写封电子邮件给numpy开发人员询问,因为他们是唯一知道原因的人。 - eyllanesc
1
矩阵乘积中每个元素都是来自输入的相应行和列的点积。 - Mad Physicist
1
np.dot 在输入为一维数组时会产生标量。传统的矩阵乘法适用于二维数组。但对于三维或混合维度,有什么定义和名称呢?这里有一个新名称 - np.matmul。为了更大的通用性,还有Einstein符号,即np.einsum - hpaulj
对于nm维数组或张量NMN.dot(M)的维度将为(n + m - 2)(因为N的第一维和M的最后一维将被求和)。当n = m = 1时,输出是一个0维张量或标量,这被称为“标量积”。当n = m = 2时,输出是一个2维张量或矩阵,这个操作被称为“矩阵乘法”。当n = 2, m = 1时,输出是一个1维张量或向量,这被(至少由我的教授)称为“映射”。 - Daniel F
1
此外,这远非基于观点的问题,因为点积(“内积”)和点表示法在数学上是明确定义的,而提问者似乎只是不知道完整的定义。 - Daniel F
2个回答

3

常见的乘法写法是使用一个居中的点:中间点号

A⋅B

这个名称几乎肯定来自于这种表示法。实际上,Unicode的“数学运算符”块下有一个专门的代码点名为“DOT OPERATOR”:chr(0x22c5)。注释中提到:

...用于表示乘法

关于这个评论:

然而,“点积”是另一回事,它从两个向量中产生单个标量

它们并不完全无关!在二维矩阵乘法A⋅B中,结果中位置(i,j)的元素来自于行i与列j的点积。

2
“点积”或“内积”在张量代数中与线性代数相比有更广泛的定义。
对于n维和m维张量N和M,N⋅M的维度将为(n + m - 2),因为乘法后将对“内部维度”(N的最后一个维度和M的第一个维度)进行求和。
(顺便说一句,N.dot(M)实际上对N的最后一个维度和M的倒数第二个维度进行求和,因为……原因。实际的张量代数“点积”功能被分配给np.tensordot)
对于n = m = 1(即两个1维张量或“向量”),输出是一个0维张量或“标量”,这等同于线性代数中的“标量”或“点积”。
对于n = m = 2(即两个2维张量或“矩阵”),输出是一个2维张量或“矩阵”,操作等同于“矩阵乘法”。
对于n = 2,m = 1,输出是一个1维张量或“向量”,这被称为(至少由我的教授们称之为)“映射”。
请注意,由于维度的顺序对内积的构造很重要,因此……
N.dot(M) == M.dot(N)

一般情况下,除非n = m = 1(即标量积的情况下),否则通常不为True


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接