Умножение матриц NumPy: начните за 5 минут

Умножение матриц NumPy Программирование и разработка

NumPy — популярная библиотека Python, которая предлагает ряд мощных математических функций. Библиотека широко используется в количественных областях, таких как наука о данных, машинное обучение и глубокое обучение. Мы можем использовать NumPy для выполнения сложных математических вычислений, таких как умножение матриц.

Умножение матриц может помочь нам быстро приблизиться к очень сложным вычислениям. Он может помочь нам в теории сетей, линейных системах уравнений, моделировании населения и многом другом. В этом руководстве мы рассмотрим некоторые основные вычисления с умножением матриц NumPy.

Что такое NumPy?

NumPy — это библиотека Python с открытым исходным кодом, которую мы можем использовать для выполнения высокоуровневых математических операций с массивами, матрицами, линейной алгеброй, анализом Фурье и т. Д. Библиотека NumPy очень популярна в научных вычислениях, науках о данных и машинном обучении. NumPy совместим с популярными библиотеками данных, такими как pandas, matplotlib и Scikit-learn. Это намного быстрее, чем списки Python, потому что он объединяет более быстрые коды, такие как C и C ++, в Python. Он также разбивает наши задачи на несколько частей и обрабатывает каждую часть одновременно.

Установка и импорт NumPy

Прежде чем мы начнем, убедитесь, что у нас установлен NumPy. Если у вас уже есть Python, вы можете установить NumPy с помощью одной из следующих команд:

conda install numpy

или

pip install numpy

Чтобы импортировать NumPy в наш код Python, мы можем использовать следующую команду:

import numpy as np

Что такое матрица NumPy?

Матрица — это двумерный массив. Каждый элемент в массиве имеет два индекса. Давайте посмотрим на пример в NumPy:

import numpy as np
A = [[6, 7],
      [8, 9]]
print(np.array(A) [0,0])

В приведенном выше коде, мы имеем матрицу A [[6, 7], [8, 9]]. Мы запрашиваем элемент, указанный в (0,0), и наш результат возвращается 6. Когда мы хотим определить форму нашей матрицы, мы используем количество строк по количеству столбцов. Это означает, что матрица A имеет форму 2×2.

Читайте также:  Примеры enumerate Python

Теперь давайте взглянем на несколько различных методов умножения матриц NumPy.

Методы умножения матриц NumPy

Есть три основных способа выполнить умножение матрицы NumPy:

  • np.dot(array a, array b): возвращает скалярное произведение или скалярное произведение двух массивов
  • np.matmul(array a, array b): возвращает матричное произведение двух массивов
  • np.multiply(array a, array b): возвращает поэлементное матричное умножение двух массивов

Давайте подробнее рассмотрим каждый из трех методов:

Скалярное умножение или скалярное произведение с numpy.dot

Скалярное умножение — это простая форма умножения матриц, это просто число, как 1, 2или 3. При скалярном умножении мы умножаем скаляр на матрицу. Каждый элемент в матрице умножается на скаляр, в результате чего выходные данные имеют ту же форму, что и исходная матрица.

При скалярном умножении порядок не имеет значения. Мы получим один и тот же результат независимо от того, умножаем ли мы скаляр на матрицу или матрицу на скаляр.

Давайте посмотрим на пример:

import numpy as np
A = 5
B = [[6, 7],
      [8, 9]]
print(np.dot(A,B))

Теперь давайте умножим двумерную матрицу на другую двумерную матрицу. При умножении двух матриц порядок имеет значение. Это означает, что матрица A, умноженная на матрицу B, не то же самое, что матрица B, умноженная на матрицу A.

Прежде чем мы начнем, давайте посмотрим на визуальное представление того, как выполняется умножение.

Прежде чем мы начнем, давайте посмотрим на визуальное представление того

import numpy as np
A = [[6, 7],
      [8, 9]]
B = [[1, 3],
      [5, 7]]
print(np.dot(A,B))
print(«———-«)
print(np.dot(B,A))

Примечание. Важно отметить, что мы можем перемножить две матрицы только в том случае, если количество столбцов в первой матрице равно количеству строк во второй матрице.

Матричный продукт с numpy.matmul

matmul()Функция дает нам матрицу произведение двух 2-й массивов. С помощью этого метода мы не можем использовать скалярные значения для нашего ввода. Если один из наших аргументов представляет собой одномерный массив, функция преобразует его в матрицу, добавляя 1 к его измерению. Он удаляется после завершения умножения.

Если один из наших аргументов больше 2-d, функция рассматривает его как стек матриц в последних двух индексах. Этот matmul()метод отлично подходит для случаев, когда мы не уверены в размерах наших матриц.

Давайте посмотрим на несколько примеров:

Умножение двумерного массива на другой двумерный массив

import numpy as np
A = [[2, 4],
      [6, 8]]
B = [[1, 3],
      [5, 7]]
print(np.matmul(A,B))

Умножение двумерного массива на одномерный массив

import numpy as np
A = [[5, 0],
      [0, 5]]
B = [5, 2]
print(np.matmul(A,B))

Один массив с размерами больше 2-х

import numpy as np
A = np.arange(8).reshape(2, 2, 2)
B = np.arange(4).reshape(2, 2)
print(np.matmul(A,B))

Поэлементное умножение матриц с помощью numpy.multiply

numpy.multiply()Метод принимает две матрицы в качестве входных данных и выполняет поэлементное умножение на них. Поэлементное умножение, или произведение Адамара, умножает каждый элемент первой матрицы на эквивалентный элемент во второй матрице. При использовании этого метода обе матрицы должны иметь одинаковые размеры.

Давайте посмотрим на пример:

import numpy as np
A = np.array([[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]])
B = np.array([[1, 2, 3, 4, 5], [5, 4, 3, 2, 1]])
print(np.multiply(A,B))

Мы можем передать в numpy.multiply()метод определенные строки, столбцы или подматрицы. Размеры строк, столбцов или подматриц, которые мы передаем в качестве наших операндов, должны быть одинаковыми. Давайте посмотрим на пример:

import numpy as np
A = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
B = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20]])
print(np.multiply(A[ 0,:], B[ 1,: ]))
print(«———-«)
print(np.multiply(A[ 1,:], B[ 0,:]))

Подведение итогов и следующие шаги

Поздравляем с вашими первыми шагами в умножении матриц NumPy! Это сложная, но важная часть линейной алгебры. Это помогает нам лучше понять различные аспекты науки о данных, машинного обучения, глубокого обучения и других распространенных областей. Еще многое предстоит узнать о NumPy и матрицах. Вот некоторые рекомендуемые темы для обсуждения:

  • Транспонирование матрицы NumPy
  • Массивы NumPy (ndarray)
  • NumPy векторизация
Оцените статью
bestprogrammer.ru
Добавить комментарий