numpy.matmul
numpy.matmul(a, b, out=None)
Функция matmul() вычисляет матричное произведение двух массивов. Доступна в NumPy с версии 1.10.0.
Поведение функции зависит от входных массивов следующим образом:
- Если оба аргумента это двумерные массивы, то они умножаются как обычные матрицы;
- Если один из массивов имеет размерность больше двух, то он считается последовательностью матриц с формой, равной последним двум индексам. Далее срабатывает механизм транслирования;
- Если первый аргумент это одномерный массив (вектор), то он считается матрицей в которой каждая строка повторяется и равна исходному вектору. После умножения возвращается одна строка результирующей матрицы;
- Если второй аргумент это одномерный массив, то он считается матрицей в которой каждый столбец повторяется и равен исходному вектору. После умножения возвращается один столбец результирующей матрицы;
- Произведение последовательности матриц на вектор и наоборот, вернет последовательность векторов;
- Аргументом не может быть число, для этого используйте
a*b
.
-
- a, b - массивы NumPy или подобные массивам объекты.
- Входные данные.
- out - массив NumPy, необязательный параметр.
- Массив в который можно поместить результат функции. Данный массив должен соответствовать форме и типу данных результирующего массива функции, а так же обязательно быть C-смежным, т.е. хранить данные в строчном С стиле. Указание данного параметра, позволяет избежать лишней операции присваивания тем самым немного ускоряя работу вашего кода. Полезный параметр если вы очень часто обращаетесь к функции в цикле.
-
- результат - массив NumPy или число
- Если оба аргумента это векторы то возвращается число. В противном случае возвращается массив.
Замечание
Если один из аргументов это число, или если длина последней оси
Примеры
Умножение двумерных массивов:
>>> a = [[1, 2], [3, 4]]
>>> b = [[2, 4], [1, 3]]
>>>
>>> np.matmul(a, b)
array([[ 4, 10],
[10, 24]])
Умножение одномерного массива на двумерный:
>>> c = [5, 7]
>>>
>>> np.matmul(c, a)
array([26, 38])
>>>
>>> np.matmul(a, c)
array([19, 43])
Массивы с размерностью больше двух считаются последовательностью матриц:
>>> d = np.arange(12).reshape(3, 2, 2)
>>> d
array([[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]],
[[ 8, 9],
[10, 11]]])
>>>
>>> np.matmul(a, d)
array([[[ 4, 7],
[ 8, 15]],
[[16, 19],
[36, 43]],
[[28, 31],
[64, 71]]])
>>>
>>> np.matmul(a, d[0])
array([[ 4, 7],
[ 8, 15]])
Для комплексных векторов возвращается внутреннее произведение:
>>> np.matmul([1+2j, 1+3j], [1+2j, 1+3j])
(-11+10j)
>>>
>>> np.inner([1+2j, 1+3j], [1+2j, 1+3j])
(-11+10j)