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. Разные подходы, но оба языка отлично справляются с векторными и матричными операциями.