Функция matmul
Функция matmul выполняет матричное умножение
двух массивов. Первым параметром функция принимает
левый массив, вторым - правый. Функция поддерживает
умножение как двумерных матриц, так и многомерных
массивов с трансляцией по последним двум осям.
Синтаксис
np.matmul(a, b)
Пример
Давайте выполним матричное умножение двух матриц размером 2x2:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
res = np.matmul(a, b)
print(res)
Результат выполнения кода:
[[19 22]
[43 50]]
Пример
Давайте перемножим матрицу размером 2x3 и матрицу размером 3x2:
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8], [9, 10], [11, 12]])
res = np.matmul(a, b)
print(res)
Результат выполнения кода:
[[ 58 64]
[139 154]]
Пример
Давайте выполним матричное умножение для трехмерных массивов (пакетное умножение):
import numpy as np
a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
b = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])
res = np.matmul(a, b)
print(res)
Результат выполнения кода:
[[[ 31 34]
[ 71 78]]
[[155 166]
[211 226]]]
Пример
Давайте перемножим вектор-строку и вектор-столбец
с помощью matmul:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([[4], [5], [6]])
res = np.matmul(a, b)
print(res)
Результат выполнения кода:
[32]
Пример
Давайте сравним matmul с оператором @,
который выполняет то же самое действие:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
res1 = np.matmul(a, b)
res2 = a @ b
print(res1)
print(res2)
Результат выполнения кода:
[[19 22]
[43 50]]
[[19 22]
[43 50]]