Существует два способа умножения матриц:
- Умножение матрицы на скаляр. Это известно как скалярное умножение.
- Умножение матрицы на другую матрицу. Это известно как умножение матриц.
В данном руководстве показано умножение матриц в Python с использованием массивов numpy и с помощью метода numpy matmul(). Итак, давайте подробно рассмотрим этот метод.
Что такое функция np.matmul() в Python?
Метод np.matmul() используется в Python для определения матричного произведения двух массивов. Функция numpy matmul() принимает arr1 и arr2 в качестве аргументов и возвращает матричное произведение входных массивов.
Чтобы умножить два массива в Python, используйте метод np.matmul(). В случае двумерных матриц возвращается обычное матричное произведение. Если предоставленные матрицы имеют размерность больше 2, они рассматриваются как стек матриц, находящихся в двух последних индексах, и передаются соответствующим образом.
Если какой-либо из двух массивов является одномерным, он продвигается в матрицу путем добавления 1 к его размерам. После выполнения матричного умножения добавленная единица удаляется.
Синтаксис
|
1 |
numpy.matmul(arr1, arr2, out=None) |
Параметры
Функция matmul() принимает не более трех параметров:
- arr1: array_like, первый входной массив.
- arr2: array_like, второй входной массив.
- out: ndarray, это необязательный параметр.
Это n-мерный массив, в котором должны храниться выходные данные. Предположим, что arr1 имеет форму(m,k), а arr2 имеет форму(k,n); они должны иметь форму(m,n). Если этот параметр не указан или отсутствует, возвращается только что выделенный массив.
Возвращаемое значение
Метод matmul() возвращает матричное произведение входных массивов. Скаляр создается только тогда, когда и arr1, и arr2 являются одномерными векторами.
Примеры программирования
- Программа для демонстрации работы метода numpy.matmul() в случае обычной двумерной матрицы
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# importing the numpy module import numpy as np # first 2-D array arr1 arr1 = np.array([[2, 4], [6, 8]]) print("first array is :") print(arr1) print("Shape of first array is: ", arr1.shape) # second 2-D array arr1 arr2 = np.array([[1, 3], [5, 7]]) print("second array is :") print(arr2) print("Shape of second array is: ", arr2.shape) # calculating matrix product res = np.matmul(arr1, arr2) print("Resultant array is :") print(res) print("Shape of resultant array is: ", res.shape) |
Выход
|
1 2 3 4 5 6 7 8 9 10 11 12 |
first array is : [[2 4] [6 8]] Shape of first array is: (2, 2) second array is : [[1 3] [5 7]] Shape of second array is: (2, 2) Resultant array is : [[22 34] [46 74]] Shape of resultant array is: (2, 2) |
Объяснение.
В приведенной выше программе мы взяли два двумерных входных массива с именами arr1 и arr2; мы отобразили вывод, отобразив матричное произведение обоих массивов. Результирующий массив также будет иметь вид(2,2).
- Программа для демонстрации работы метода numpy.matmul() в случае, если какая-либо из матриц является одномерной матрицей.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# importing the numpy module import numpy as np # first 2-D array arr1 arr1 = np.array([[3, 0], [0, 4]]) print("first array is :") print(arr1) print("Shape of first array is: ", arr1.shape) # second 2-D array arr1 arr2 = np.array([1, 2]) print("second array is :") print(arr2) print("Shape of second array is: ", arr2.shape) # calculating matrix product res = np.matmul(arr1, arr2) print("Resultant array is :") print(res) print("Shape of resultant array is: ", res.shape) |
Выход
|
1 2 3 4 5 6 7 8 9 10 |
first array is : [[3 0] [0 4]] Shape of first array is: (2, 2) second array is : [1 2] Shape of second array is: (2,) Resultant array is : [3 8] Shape of resultant array is: (2,) |
Объяснение
В приведенной выше программе мы взяли двумерный входной массив с именем arr1 и еще один одномерный вектор с именем arr2. Затем мы отобразили вывод, отобразив матричное произведение обоих массивов. Результирующий массив также будет иметь вид(2, ).
Для более глубокого понимания продукта его можно понимать как:
Поскольку arr2 является одномерным вектором, он преобразуется в матрицу путем добавления к нему 1, и это может быть показано как: [[11], [2,1]]. Теперь после преобразования матричное произведение вычисляется как обычно и результат будет получен как [[3,3],[8,4]], но добавленный столбец снова будет удален; следовательно, конечным результатом будет [3,8], имеющее форму(2,).
