Как выполнить в NumPy умножение матриц и векторов?

Скалярное произведение векторов и перемножение матриц являются одними из наиболее востребованных задач, с которыми легко справляется функция dot(). В NumPy вектор представляется в виде одномерного массива, а матрица — в виде двумерного. В данной статье мы разберем, как можно осуществить в NumPy умножение матриц и векторов с помощью функции 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() принимает в качестве аргументов матрицу и вектор, а возвращает вектор, элементы которого равны скалярным произведениям строк матрицы на вектор.

У нас появился Telegram-канал для изучающих Python! Подписывайтесь по ссылке: «Кодим на Python! Вместе «питонить» веселее! 😉

4. Выполняем в NumPy умножение матриц

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

# подключаем библиотеку 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]]         

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

NumPy умножение матриц

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

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