Чтобы вычислить скалярное произведение двух матриц, используйте функцию np.dot(). Давайте подробно рассмотрим эту функцию.
Что такое функция np.dot() в Python?
numpy.dot() в Python — это математическая функция, которая используется для возврата математической точки двух заданных векторов(списков). Функция np.dot() принимает три аргумента и возвращает скалярное произведение двух заданных векторов в Python. Векторы могут быть как одномерными, так и многомерными. В обоих случаях это следует правилу математического скалярного произведения.
Для одномерных массивов это внутренний продукт векторов. Для N-мерных массивов это сумма произведений последней оси a и предпоследней оси b.
Синтаксис
|
1 |
numpy.dot(vector_a, vector_b, out = None) |
Параметры
Функция dot() принимает в основном три параметра:
- vector_a: это первый вектор.
- vector_b: второй вектор.
- out. Должен иметь тот же вид, который был бы возвращен, если бы он не использовался. В частности, он должен иметь соответствующую форму, должен быть C-непрерывным, а его dtype должен быть формой, возвращаемой для точки(a, b). Поэтому, если эти условия не выполняются, вместо того, чтобы пытаться быть гибким, делается исключение.
Возвращаемое значение
Метод numpy.dot() возвращает скалярное произведение двух заданных векторов. Если какой-либо из векторов или оба вектора являются комплексными, то для вычисления скалярного произведения используется его комплексно-сопряженный вектор.
Примеры использования метода numpy.dot()
Пример 1
Вычислите точку, когда заданные векторы одномерны.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# Program to show working of numpy.dot # When both the vectors are 1D # Importing numpy import numpy as np # We will create an 1D array arr1 = np.array([1, 2, 3, 4]) arr2 = np.array([2, 3, 4, 5]) # Printing the array print("The first array is: ", arr1) print("The second array is: ", arr2) # Shape of the array print("Shape of the first array is : ", np.shape(arr1)) print("Shape of the second array is : ", np.shape(arr2)) # Printing dot product of the arr1.arr2 out = np.dot(arr1, arr2) print("Dot product of arr1 and arr2") print(out) # When both are complex a = 6+1j b = 4+3j out1 = np.dot(a, b) print("Dot product of a and b") print(out1) |
Выход
|
1 2 3 4 5 6 7 |
The first array is: [1 2 3 4] The second array is: [2 3 4 5] Shape of the first array is : (4,) Shape of the second array is : (4,) Dot product of arr1 and arr2 40 Dot product of a and b(21+22j) |
Объяснение.
В этой программе в первом случае мы инициализировали два одномерных массива, а затем распечатали как массивы, так и их форму. После этого мы вызвали numpy.dot() для вычисления скалярного произведения массивов.
Мы видим, что получили ответ 40. По правилу скалярного произведения:
(1*2+2*3+3*4+4*5) = 40.
Также во втором случае мы объявили два комплексных уравнения. Затем мы напечатали их скалярные произведения. Мы видим, что ответ равен (21+22j), который был рассчитан следующим образом:
6*(4+3к) + 1д*(4-3к)
= 24+18j+4j-3
= 21+22j
Пример 2
Вычислите скалярное произведение заданных векторов многомерными.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Program to show the working of numpy.dot # When both the vectors are 2D # Importing numpy import numpy as np # We will create an 1D array arr1 = np.array([[1, 2], [5, 6]]) arr2 = np.array([[2, 3], [2, 4]]) # Printing the array print("The first array is:\n ", arr1) print("\nThe second array is: \n ", arr2) # Shape of the array print("Shape of the first array is : ", np.shape(arr1)) print("Shape of the second array is : ", np.shape(arr2)) # Printing dot product of the arr1.arr2 out = np.dot(arr1, arr2) print("Dot product of arr1 and arr2") print(out) |
Выход
|
1 2 3 4 5 6 7 8 9 10 11 12 |
The first array is: [[1 2] [5 6]] The second array is: [[2 3] [2 4]] Shape of the first array is : (2, 2) Shape of the second array is : (2, 2) Dot product of arr1 and arr2 [[ 6 11] [22 39]] |
Объяснение
В этой программе в первом случае мы инициализировали два 2D-массива, а затем распечатали как массивы, так и их форму. После этого мы вызвали numpy.dot() для вычисления скалярного произведения массивов. Мы видим, что ответ находится в двумерном массиве.
