Начало работы за 5 минут
Главная/Блог/Умножение матриц NumPy: Начало работы за 5 минут
03 сентября 2021 г. — 5 мин чтения функции. Библиотека широко используется в количественных областях, таких как наука о данных, машинное обучение и глубокое обучение. Мы можем использовать NumPy для выполнения сложных математических вычислений, таких как умножение матриц.
Матричное умножение NumPy может помочь нам быстро приблизиться к очень сложным вычислениям. Это может помочь нам с теорией сетей, линейными системами уравнений, моделированием населения и многим другим. В этом руководстве мы рассмотрим некоторые базовые вычисления с умножением матриц NumPy и матричными операциями.
Начнем!
Мы рассмотрим :
- Что такое NumPy?
- Что такое матрица 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, мы можем использовать следующую команду:
импортировать numpy как np
Если вы хотите изучить структуры данных Python, начните с этого полезного руководства по Python!
Что такое матрица NumPy?
Матрица представляет собой двумерный массив. Каждый элемент массива имеет два индекса. Давайте рассмотрим пример в NumPy:
импортировать numpy как np
A = [[6, 7],
[8, 9]]
print(np.array(A) [0,0])
В приведенном выше коде у нас есть матрица A [[6, 7], [8, 9]]
. Мы запрашиваем элемент, заданный по адресу (0,0)
, и наш вывод возвращает 6
. Когда мы хотим определить форму нашей матрицы, мы используем количество строк по количеству столбцов. Это означает, что матрица A имеет форму 2×2.
Теперь давайте рассмотрим несколько различных методов умножения матриц NumPy.
Методы умножения матриц NumPy
Существует три основных способа выполнить умножение матриц NumPy:
-
np.dot(массив a, массив b)
: возвращает скалярное или точечное произведение двух массивов -
np.matmul(массив a, массив b)
: возвращает матричное произведение двух массивов -
np. multiply(массив a, массив b)
: возвращает поэлементное матричное умножение двух массивов
Давайте подробнее рассмотрим каждый из трех методов с учебным пособием NumPy по каждому из них:
Скалярное умножение или скалярное произведение с numpy.dot
Скалярное умножение — это простая форма матричного умножения. Скаляр — это просто число, например 1
, 2
или 3
. При скалярном умножении мы умножаем скаляр на матрицу
При скалярном умножении порядок не имеет значения . Мы получим один и тот же результат, умножим ли мы скаляр на матрицу или матрицу на скаляр.
Давайте рассмотрим пример:
импортировать numpy как np
A = 5
B = [[6, 7],
[8, 9]]
print(np.dot(A ,B))
Теперь давайте умножим двумерную матрицу на другую двумерную матрицу. При умножении двух матриц порядок имеет значение
Прежде чем мы начнем, давайте посмотрим на визуализацию того, как выполняется умножение.
импортировать numpy как 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()
дает нам матричное произведение двух двумерных массивов. С помощью этого метода мы не можем использовать скалярные значения для нашего ввода. Если один из наших аргументов является одномерным массивом, функция преобразует его в матрицу NumPy, добавляя 1 к его размерности. Это удаляется после выполнения умножения.
Если один из наших аргументов больше 2-d, функция рассматривает его как стек матриц по двум последним индексам. Метод matmul()
отлично подходит для случаев, когда мы не уверены в том, какими будут размеры наших матриц.
Давайте рассмотрим несколько примеров:
Умножение двумерного массива на другой двумерный массив
import numpy as np
A = [[2, 4],
[6, 8]]
B = [[1, 3],
[5, 7]]
print(np.matmul(A,B))
Умножение двумерного массива на одномерный массив
импортировать numpy как np
A = [[5, 0],
[0, 5]]
B = [5, 2]
print(np.matmul(A,B))
Один массив с размерами больше 2-d
импортировать numpy как 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()
принимает две матрицы в качестве входных данных и выполняет элемент -мудрое умножение на них. Поэлементное умножение, или произведение Адамара, умножает каждый элемент первой матрицы NumPy на эквивалентный элемент второй матрицы. При использовании этого метода обе матрицы должны иметь одинаковые размеры.
Давайте рассмотрим пример:
импортировать numpy как 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(). Размеры строк, столбцов или подматриц, которые мы передаем в качестве наших операндов, должны быть одинаковыми. Давайте рассмотрим пример:
импортировать numpy как 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
numpy.ndarray
иndarray
объектыМногомерные массивы
Хотите начать работу с Python? Ознакомьтесь с планом обучения Educative от нуля до героя на Python
Приятного обучения!
Продолжить изучение Python и NumPy
- 50 вопросов и ответов на собеседовании по Python
- Наука о данных стала проще: 5 основных приемов обучения Scikit
- Шпаргалка Pandas: 35 лучших команд и операций
НАПИСАЛ BYErin Schaffer
Присоединяйтесь к сообществу, насчитывающему более 1,7 миллиона читателей. Бесплатное электронное письмо раз в два месяца с обзором лучших статей и советов по программированию на сайте Educative.
Как использовать функцию умножения Numpy
В этом уроке я объясню, как использовать функцию умножения Numpy — также известную как np.multiply — для умножения матриц вместе.
Я объясню синтаксис np.multiply, как эта функция работает и как ее использовать.
Если вам нужно что-то конкретное, вы можете нажать на любую из следующих ссылок.
Содержание:
- Введение в Numpy Multiply
- Синтаксис np. multiply
- Примеры: как перемножать матрицы
Хорошо. Приступим к делу.
Краткое введение в Numpy Multiply
Как вы могли догадаться, функция умножения Numpy умножает матрицы вместе.
Вы можете использовать np.multiply для умножения двух массивов одинакового размера вместе. Это вычисляет то, что называется произведением Адамара. В продукте Адамара два входа имеют одинаковую форму, а выход содержит поэлементное произведение каждого из входных значений.
Вы также можете использовать np.multiply для умножения матрицы на вектор. Если вы умножаете матрицу на вектор (например, многомерный массив на массив меньшей размерности), Numpy выполнит широковещательную рассылку.
Обе техники довольно просты, и я покажу вам их на примерах.
Но сначала давайте посмотрим на синтаксис.
Синтаксис np.multiply
Синтаксис функции умножения Numpy прост:
Помните, что этот синтаксис предполагает, что вы импортировали Numpy с кодом импортировать numpy как np
.
Формат входных массивов
Обратите внимание на два входных аргумента функции, которые я назвал arr1
и arr1
. Это должны быть массивы Numpy или массивоподобные объекты, такие как списки Python.
Также существуют некоторые ограничения на форму входного массива.
Один из способов использования np.multiply состоит в том, чтобы два входных массива имели одинаковую форму (т. е. они имели одинаковое количество строк и столбцов). Если входные массивы имеют одинаковую форму, то функция умножения Numpy будет умножать значения входов попарно.
В качестве альтернативы, если два входных массива не одинакового размера, то один из массивов должен иметь форму, которая может быть передана через другой массив.
Вещание несколько сложно понять, если вы новичок в Numpy, поэтому я покажу вам пример в разделе примеров.
Дополнительные параметры
В дополнение к двум входным аргументам есть несколько необязательных параметров для функции умножения Numpy:
- out
- где
Они используются довольно редко, поэтому я не буду их здесь объяснять.
Вывод np.multiply
Вывод np.multiply — это новый массив Numpy, содержащий поэлементное произведение входных массивов.
Сказав это, есть особый случай для скаляров: если оба входа в np.multiply являются скалярными значениями, то выход будет скаляром.
Примеры: как вычислить несколько массивов Numpy вместе
Теперь давайте рассмотрим несколько примеров.
Примеры:
- Использовать умножение Numpy на два скаляра
- Использовать умножение Numpy с одним массивом и одним скаляром вектором)
Предварительный код: Импорт Numpy и создание массивов
Прежде чем запускать любой из примеров, вам нужно запустить некоторый предварительный код.
В частности, перед запуском любого из примеров вам необходимо импортировать Numpy и создать несколько массивов Numpy, с которыми мы можем работать.
Import Numpy
Во-первых, нам нужно импортировать Numpy, прежде чем мы сможем использовать какие-либо функции Numpy.
Вы можете сделать это с помощью следующего кода:
импортировать numpy как np
Создать массивы
Далее нам нужно создать несколько пустых массивов, с которыми мы можем работать.
Здесь мы собираемся создать несколько объектов Numpy:
- одномерный «вектор» чисел
- двумерная «матрица» чисел от 1 до 9 (упорядоченная)
- двумерная «матрица» чисел от 1 до 9 (рандомизированная)
Для этого мы будем использовать несколько функций Numpy, таких как функция массива Numpy, функция упорядочения Numpy, метод изменения формы Numpy и случайный выбор Numpy. (Если вы не уверены в том, что мы здесь делаем, вам следует прочитать другие руководства.)
# СОЗДАТЬ 1D 'ВЕКТОР' vector_1d = np.массив ([10,20,30]) # СОЗДАТЬ 2D МАТРИЦУ ЧИСЕЛ, ОТ 1 ДО 9числа_1_до_9 = np.arange (начало = 1, стоп = 10) matrix_2d_ordered = numbers_1_to_9.reshape((3,3)) # СОЗДАТЬ ДВУХМЕРНУЮ МАТРИЦУ ИЗ ЧИСЕЛ, ОТ 1 ДО 9, СЛУЧАЙНО ВЫБРАННЫХ np.random.seed (22) matrix_2d_random = np.random.choice (размер = (3,3), a = numbers_1_to_9, replace = False)
После того, как вы импортировали Numpy и создали массивы, вы будете готовы запускать примеры.
ПРИМЕР 1: Использование умножения Numpy на два скаляра
Во-первых, мы начнем с самого простого случая.
Здесь мы будем использовать np.multiply для умножения двух скалярных значений.
np.умножить (3,4)
ВЫХОД:
12
Объяснение
Очевидно, это очень просто и понятно.
Здесь мы просто умножаем 3 на 4. Результат равен 12.
ПРИМЕР 2: Умножение массива на скаляр
Далее мы собираемся умножить двумерный массив Numpy на скаляр (т.е. , мы умножим матрицу на скаляр).
np.multiply (matrix_2d_ordered, 2)
ВЫХОД:
массив([[ 2, 4, 6], [8, 10, 12], [14, 16, 18]])
Объяснение
Так что же здесь произошло?
Мы вызвали np. multiply с двумя аргументами: массив Numpy matrix_2d_ordered
и скалярное значение 2.
Для вывода np.multiply умножил каждое значение matrix_2d_ordered
на 2.
Это довольно просто.
ПРИМЕР 3. Умножение двух массивов Numpy одинакового размера
Теперь давайте умножим два массива одинакового размера.
Здесь мы собираемся умножить matrix_2d_ordered
на matrix_2d_random
.
np.multiply (matrix_2d_ordered, matrix_2d_random)
ВЫХОД:
массив([[ 9, 4, 12], [12, 35, 6], [56, 40, 54]])
Объяснение
Здесь np.multiply умножает значения каждой входной матрицы поэлементно.
Выход представляет собой матрицу того же размера, что и входные данные, которая содержит поэлементное произведение значений входных матриц.
(Это известно как произведение Адамара.)
ПРИМЕР 4: Умножение матрицы на вектор (т. е. широковещательная рассылка)
Наконец, давайте сделаем еще один пример.
Здесь мы собираемся умножить один из наших двумерных входных массивов на одномерный массив. По сути, это похоже на умножение матрицы на вектор.
np.multiply (matrix_2d_ordered, vector_1d)
ВЫХОД:
массив([[ 10, 40, 90], [40, 100, 180], [ 70, 160, 270]])
Объяснение
В этом примере мы умножили двумерную матрицу на одномерный вектор. (То есть, мы умножили 2D Numpy на массив 1D Numpy).
Когда мы это делаем, Numpy выполняет то, что называется «трансляцией». По сути, он берет одномерный вектор, обрабатывает его как строку данных и умножает этот вектор на каждую строку двумерного массива.
Таким образом, строка 1 матрицы умножается на вектор поэлементно. Затем он умножает строку 2 матрицы на вектор. И так далее.
Имейте в виду, что при этом вектор должен иметь такую форму, чтобы его можно было транслировать по матрице.
Оставьте свои другие вопросы в комментариях ниже
У вас есть другие вопросы о том, как умножать массивы Numpy? У вас есть вопросы о том, как умножать матрицы и векторы в Numpy?
Если да, оставьте свои вопросы в разделе комментариев ниже.