https://en.wikipedia.org/wiki/Matrix_multiplication
That is, the entry c[i,j] of the product is obtained by multiplying
term-by-term the entries of the ith row of A and the jth column of B,
and summing these m products. In other words, c[i,j] is the dot product
of the ith row of A and the jth column of B.
https://en.wikipedia.org/wiki/Dot_product
Algebraically, the dot product is the sum of the products of the
corresponding entries of the two sequences of numbers.
На ранних уроках математики вы научились брать матричный продукт, проводя одним пальцем по строкам A
и вниз по столбцам B
, умножая пары чисел и суммируя их?Это движение является частью моей интуиции о том, как этот продукт берется.
В случае 1-го второго аргумента np.dot
и np.matmul
производят одно и то же, но описывают действие по-разному:
Если a
является массивом ND, а b
является массивом 1-D, это сумма произведений по последней оси a
и b
.
Если вторым аргументом является 1-D, он преобразуется в матрицу, добавляя 1 к его измерениям.После умножения матрицы добавленная 1 удаляется.
В [103]: np.dot ([[1,2], [3,4]], [1,2]) Out [103]: массив([5, 11]) В [104]: np.matmul ([[1,2], [3,4]], [1,2]) Out [104]: массив ([5, 11])
Добавление размера к B
, делает:
In [105]: np.matmul([[1,2],[3,4]], [[1],[2]])
Out[105]:
array([[ 5],
[11]])
Это последний (2,2) с (2,1) => (2,1)
Иногда яснее выразить действие в einsum
терминах:
In [107]: np.einsum('ij,j->i', [[1,2],[3,4]], [1,2])
Out[107]: array([ 5, 11])
j
, последняя ось обоих массивов - это сумма, которая суммируется.