我有些困惑于Numpy函数dot的命名:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.dot.html
看起来这是Numpy中用于执行矩阵乘法的函数。然而,“点积”是另一种不同的运算,它从两个向量中产生单个标量:https://en.wikipedia.org/wiki/Dot_product
有人能解决这两种用法中“点”这个术语的歧义吗?
我有些困惑于Numpy函数dot的命名:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.dot.html
看起来这是Numpy中用于执行矩阵乘法的函数。然而,“点积”是另一种不同的运算,它从两个向量中产生单个标量:https://en.wikipedia.org/wiki/Dot_product
有人能解决这两种用法中“点”这个术语的歧义吗?
常见的乘法写法是使用一个居中的点:中间点号:
A⋅B
chr(0x22c5)
。注释中提到:
关于这个评论:...用于表示乘法
它们并不完全无关!在二维矩阵乘法A⋅B中,结果中位置(i,j)的元素来自于行i与列j的点积。然而,“点积”是另一回事,它从两个向量中产生单个标量
N.dot(M) == M.dot(N)
一般情况下,除非n = m = 1
(即标量积的情况下),否则通常不为True
。
np.dot
在输入为一维数组时会产生标量。传统的矩阵乘法适用于二维数组。但对于三维或混合维度,有什么定义和名称呢?这里有一个新名称 -np.matmul
。为了更大的通用性,还有Einstein符号
,即np.einsum
。 - hpauljn
和m
维数组或张量N
和M
,N.dot(M)
的维度将为(n + m - 2)
(因为N
的第一维和M
的最后一维将被求和)。当n = m = 1
时,输出是一个0维张量或标量,这被称为“标量积”。当n = m = 2
时,输出是一个2维张量或矩阵,这个操作被称为“矩阵乘法”。当n = 2, m = 1
时,输出是一个1维张量或向量,这被(至少由我的教授)称为“映射”。 - Daniel F