матриц в R и Python | Jake Huneycutt
Python и R — это языки, которые используют многие в науке о данных и машинном обучении. В этой статье мы рассмотрим создание и умножение матриц в обоих языках.
Наши матрицы
Сначала мы создадим две разные матрицы: матрицу 3×2 и матрицу 2×3. Затем мы перемножим их вместе, чтобы получить матрицу 3×3. Наши две матрицы изображены ниже:
Я рассчитаю их с помощью онлайн-калькулятора матриц, чтобы найти результат. Затем я удостоверюсь, что получаю правильные результаты в Python и R. После перемножения матриц я получаю в результате следующую матрицу 3×3:
Теперь давайте посмотрим на R.
Умножение матриц в R
Сначала создадим наши матрицы. В R есть два распространенных способа сделать это. Первый — использовать матричную функцию, а второй — использовать функцию rbind или cbind. Начнем с «матрицы». Чтобы создать две мои матрицы с помощью «матрицы», мы должны сделать следующее.
m1 <- матрица(c(2,3,4,7,0,1), nrow = 3, ncol=2)
m2 <- матрица(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.
импортировать numpy как 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. Разные подходы, но оба языка отлично подходят для векторных и матричных операций.
Онлайн-калькулятор: умножение матриц
Количество строк матрицы A:
------
123456
Количество столбцов матрицы A:
------
123456
Количество столбцов матрицы B:
------
123456
Enter values:
A * B = C =
000 | 1 | 2 | 3 | 4 | 000 |
5 | 6 | 7 | 8 | ||
9 | 10 | 11 | 12 | ||
13 | 14 | 15 | 16 |
000 | 1 | 5 | 9 | 13 | 000 |
2 | 6 | 10 | 14 | ||
3 | 7 | 11 | 15 | ||
4 | 8 | 12 | 16 |
000 | 30 | 70 | 110 | 150 | 000 |
70 | 174 | 278 | 382 | ||
110 | 278 | 446 | 614 | ||
150 | 382 | 614 | 846 |
Calculation of elements of the matrix:
с 11 = a 11 * b 11 + а 12 * б 21 + а