从 numpy 的文档中得知:https://numpy.org/doc/stable/reference/generated/numpy.dot.html#numpy.dot
numpy.dot(a, b, out=None)
计算两个数组的点积。具体来说,
如果 a 和 b 均为 1-D 数组,则是向量的内积(不进行复共轭)。
如果 a 和 b 均为 2-D 数组,则是矩阵乘法,但建议使用 matmul 或 a @ b。
如果 a 或 b 是 0-D(标量),则等效于相乘并使用 numpy.multiply(a, b) 或 a * b。
如果 a 是 N-D 数组且 b 是 1-D 数组,则是 a 和 b 的最后一个轴上的和积。
如果 a 是 N-D 数组且 b 是 M-D 数组(其中 M>=2),则是 a 和 b 的最后一个轴与 b 倒数第二个轴的乘积之和:
根据第四点,如果我们对一个 2-D 数组 A 和一个 1-D 数组 B 进行点积运算,正确的做法应该是沿着 A 的列方向求和,并沿着 B 的行方向进行乘积,因为 A 的最后一个轴是列,对吗? 然而,当我在 Python IDLE 中尝试这样做时,输出结果如下:
>>> a
array([[1, 2],
[3, 4],
[5, 6]])
>>> b
[1, 2]
>>> a.dot(b)
array([ 5, 11, 17])
我预计这会抛出一个错误,因为a的列数大于b的行数。
b
的形状是(2,)- 这是唯一的维度。 - hpaulj