Умножение матриц и векторов в Python с помощью функции dot() библиотеки Numpy!

Умножение матриц и векторов в Python с помощью функции dot() библиотеки NumPy!

Скалярное произведение векторов и перемножение матриц являются одними из наиболее востребованных задач, с которыми легко справляется функция dot(). В NumPy вектор представляется в виде одномерного массива, а матрица — в виде двумерного. В данной статье мы разберем, как можно выполнить умножение матриц и векторов в Python с помощью функции dot() и рассмотрим на примерах, как:

  1. Вычислить скалярное произведение векторов или перемножить одномерные массивы?
  2. Умножить вектор на матрицу?
  3. Умножить матрицу на вектор?
  4. Умножить матрицу на матрицу?

Для желающих освежить память о правилах математических операций с матрицами, рекомендую ознакомиться со статьей «Математические операции с матрицами». Помимо математической теории, там приведен код на Python, позволяющий легко складывать, вычитать, либо умножать матрицы.

1. Вычисляем скалярное произведение векторов или перемножаем одномерные массивы:

# подключаем библиотеку numpy
import numpy as np

# определяем векторы
a = np.array([0, 1, 2])
b = np.array([7, 8, 9])

# вычисляем скалярное произведение векторов
multiply_ab = np.dot(a, b)
print(multiply_ab)
Результат работы скрипта:          
26             

Как получился результат?

Для заданных векторов a и b функция dot() перемножает элементы векторов одинакового порядка и вычисляет их сумму:

 a = [0, 1, 2]  b = [7, 8, 9]
 np.dot(a, b) = 0*7 + 1*8 + 2*9 = 26 

Подведем итог: для вычисления скалярного произведения двух векторов функция dot() принимает одномерные массивы одинаковой размерности в качестве аргументов и возвращает числовое значение.

2. Умножаем вектор на матрицу

Для умножения вектора на матрицу размер вектора должен быть равен числу строк матрицы!

# определяем вектор и матрицу
a = np.array([2, 3])
b = np.array([[4, 7, 1],
              [0, 5, 8]])

# вычисляем произведение вектора на матрицу
multiply_ab = np.dot(a, b)
print(multiply_ab)
Результат работы скрипта:          
[ 8  29  26] 

Как получился результат?

 a = [2  3]
 b = [[4  7  1],
      [0  5  8]]
 
np.dot(a, b) = [2*4 + 3*0   2*7+3*5  2*1+3*8] = [8  29  26] 

Подведем итог: для вычисления произведения вектора и матрицы, размер вектора должен быть равен числу строк матрицы. Функция dot() принимает в качестве аргументов вектор и матрицу, а возвращает вектор, элементы которого равны скалярным произведениям вектора на столбцы матрицы.

3. Умножаем матрицу на вектор

Для умножения матрицы на вектор размер вектора должен быть равен числу столбцов матрицы!

# подключаем библиотеку numpy
import numpy as np

# определяем матрицу и вектор
b = np.array([[4, 7, 1],
              [0, 5, 8]])
c = np.array([2, 3, 4])

# вычисляем произведение матрицы на вектор
multiply_bc = np.dot(b, c)
print(multiply_bc)
Результат работы скрипта:          
[33   47] 

Как получился результат?

b = [[4  7  1],          
     [0  5  8]]

c = [2  3  4 ]

np.dot(b, c) = [4*2 + 7*3 + 1*4    0*2 + 5*3 + 8*4 ] = [33  47] 

Подведем итог: для вычисления произведения матрицы и вектора, размер вектора должен быть равен числу столбцов матрицы. Функция dot() принимает в качестве аргументов матрицу и вектор, а возвращает вектор, элементы которого равны скалярным произведениям строк матрицы на вектор.

4. Умножаем матрицу на матрицу

Для умножения двух матриц их внутренние размерности должны быть одинаковыми, то есть число столбцов первой матрицы должно быть равно числу столбцов второй матрицы!

# подключаем библиотеку numpy
import numpy as np

# определяем матрицы
a = np.array([[1, 2, 3], 
              [2, 3, 0]])
b = np.array([[3, 1, 2],
              [2, 3, 4],
              [4, 0, 2]])

# вычисляем произведение матриц
c = np.dot(a, b)
print(c)
 Результат работы скрипта:          
  [[19  7  16]            
   [12  11  16]]         

Как получился результат?

Подведем итог: для вычисления произведения матриц, число столбцов первой матрицы должно быть равно числу строк второй. Функция dot() принимает в качестве аргументов первую и вторую матрицы. Результатом вычислений функции dot() является матрица, элементы которой равны скалярным произведениям строк первой матрицы на столбцы второй.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *