Python и R - это языки, к которым обращаются многие в области науки о данных и машинного обучения. В этой статье мы рассмотрим создание и умножение матриц на обоих языках.

Наши матрицы

Сначала мы создадим две разные матрицы: матрицу 3x2 и матрицу 2x3. Затем мы умножим их вместе, чтобы получить матрицу 3x3. Наши две матрицы изображены ниже:

Я рассчитаю их с помощью онлайн-калькулятора матриц, чтобы найти результат. Затем я проверю, что получаю правильные результаты в Python и R. После перемножения матриц я получаю следующую матрицу 3x3:

Теперь давайте посмотрим на Р.

Умножение матриц в R

Во-первых, давайте создадим наши матрицы. Есть два распространенных способа сделать это в R. Первый - использовать матричную функцию, а второй - либо rbind, либо cbind function. Начнем с матрицы. Чтобы создать две мои матрицы с матрицей, мы сделали бы следующее.

m1 <- matrix(c(2,3,4,7,0,1), nrow = 3, ncol=2)
m2 <- matrix(c(1,6,4,3,6,9), nrow = 2, ncol=3)

В этом коде «nrow» - это количество строк, а «ncol» - это количество столбцов. Обратите внимание, что значения заполняются сначала по столбцу, поэтому во второй матрице (m2) нашим вторым значением будет 6, которое находится во 2-й строке и 1-м столбце.

Второй метод использует «rbind» или «cbind» и будет выглядеть так:

m1 <- cbind(c(2,3,4), c(7,0,1))
m2 <- rbind(c(1,4,6), c(6,3,9))

«Cbind» сначала заполняет 1-й столбец, поэтому наш вектор [2,3,4] будет отображаться вертикально. «Rbind», с другой стороны, сначала заполняется по строкам, поэтому наш вектор [1,4,6] будет отображаться горизонтально как 1-я строка.

Теперь, когда мы создали две матрицы, их просто перемножить. Мы просто используем оператор «% *%»:

m1 %*% m2

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

Теперь о Python.

Умножение матриц в Python

Как и в случае с R, мы сначала создадим наши матрицы. В Python самый простой способ сделать это с помощью библиотеки NumPy. Сначала мы импортируем numpy.

import numpy as np

Теперь мы можем создавать наши матрицы с помощью функции np.matrix.

m1 = np.matrix([[2,7], [3,0], [4,1]])
m2 = np.matrix([[1,4,6], [6,3,9]])

Обратите внимание, что в Python это работает немного иначе, чем в R. В R матричная функция сначала заполняется по столбцу. В Python - по строкам.

Каждая строка в матрице заключена в скобки. Для матрицы № 1 это означает, что первая строка - [2,7], вторая строка - [3,0], а третья строка - [4,1]. Матрица №2 содержит только две строки: [1,4,6] и [6,3,9]. Нам также понадобится дополнительный набор скобок вокруг матриц.

После этого легко перемножить наши матрицы с помощью np.dot.

np.dot(m1,m2)

И снова наш результат подтверждается.

Однако помните, что порядок в этой операции имеет значение. Если мы сделаем ‘np.dot (m2, m1), мы получим матрицу 2x2 с разными значениями.

Итак, теперь вы знаете, как умножать матрицы как в R, так и в Python. Разные подходы, но оба языка отлично справляются с векторными и матричными операциями.