Как создать матрицу в Python: подробное руководство и примеры кода
Матрица — это особый тип структуры данных, представляющий собой двумерный массив элементов. Python предоставляет несколько способов создания матрицы, и мы рассмотрим их в этой статье.
1. Создание матрицы с помощью вложенных списков
Самый простой способ создать матрицу в Python — использовать вложенные списки. Каждый вложенный список представляет собой строку матрицы, а элементы внутри вложенных списков — столбцы.
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
В этом примере мы создали матрицу 3×3 со значениями от 1 до 9.
2. Создание матрицы с помощью NumPy
Библиотека NumPy предоставляет мощные инструменты для работы с матрицами. Чтобы создать матрицу с помощью NumPy, мы можем использовать функцию numpy.array() .
import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
В этом примере мы создали такую же матрицу 3×3 с использованием NumPy.
3. Создание пустой матрицы
Если вам нужно создать пустую матрицу определенного размера, вы можете использовать numpy.zeros() или numpy.empty() .
import numpy as np # Создаем пустую матрицу размером 2x2 matrix = np.zeros((2, 2))
В этом примере мы создали пустую матрицу 2×2, заполненную нулями. Вы также можете использовать numpy.empty() для создания пустой матрицы без инициализации значений.
4. Создание единичной матрицы
Единичная матрица — это квадратная матрица, у которой все элементы на главной диагонали равны 1, а все остальные элементы равны 0. В NumPy вы можете создать единичную матрицу с помощью numpy.eye() .
import numpy as np # Создаем единичную матрицу размером 3x3 matrix = np.eye(3)
В этом примере мы создали единичную матрицу 3×3.
5. Создание случайной матрицы
Если вам нужно создать матрицу со случайными значениями, вы можете использовать numpy.random.rand() .
import numpy as np # Создаем случайную матрицу размером 2x2 matrix = np.random.rand(2, 2)
В этом примере мы создали случайную матрицу 2×2.
Вывод
В этой статье мы рассмотрели несколько способов создания матрицы в Python. Вы можете использовать вложенные списки для простых случаев или воспользоваться библиотекой NumPy для более сложных операций с матрицами. Помните, что матрицы — это полезная структура данных, которая широко используется в множестве областей, включая науку о данных, компьютерную графику и многое другое.
Python Matrix — учебное пособие по матрицам
Мы можем реализовать матрицу Python в форме 2-го списка или 2-го массива. Для выполнения операций с Python Matrix нам необходимо импортировать Python NumPy Module.
Matrix важен в области статистики, обработки данных, обработки изображений и т. д.
Создание матрицы Python
Матрицу Python можно создать одним из следующих способов:
- Используя списки
- Используя метод arange()
- и метода matrix()
1 С использованием списков
numpy.array() можно использовать для создания массива, используя списки в качестве входных данных.
import numpy input_arr = numpy.array([[ 10, 20, 30],[ 40, 50, 60]]) print(input_arr)
[[10 20 30] [40 50 60]]
Как видно выше, выходные данные представляют собой двумерную матрицу с заданным набором входных данных в виде списка.
2 С помощью функции numpy.arange()
numpy.arange() вместе со списком входов.
import numpy print(numpy.array([numpy.arange(10,15), numpy.arange(15,20)]))
[[10 11 12 13 14] [15 16 17 18 19]]
3 С помощью функции numpy.matrix().
Функция numpy.matrix() , ее синтаксис:
numpy.matrix(input,dtype)
- input: элементы input для формирования матрицы.
- dtype: тип данных соответствующего вывода.
import numpy as p matA = p.matrix([[10, 20], [30, 40]]) print('MatrixA:\n', matA) matB = p.matrix('[10,20;30,40]', dtype=p.int32) # Setting the data-type to int print('\nMatrixB:\n', matB)
MatrixA: [[10 20] [30 40]] MatrixB: [[10 20] [30 40]]
Сложение
Операцию сложения матриц можно выполнить следующими способами:
- Традиционный метод
- Используя оператор ‘+’
1 Традиционный метод
В этом традиционном методе мы в основном берем ввод от пользователя, а затем выполняем операцию сложения с использованием циклов for (для обхода элементов матрицы) и оператора ‘+’.
import numpy as p ar1 = p.matrix([[11, 22], [33, 44]]) ar2 = p.matrix([[55, 66], [77, 88]]) res = p.matrix(p.zeros((2,2))) print('Matrix ar1 :\n', ar1) print('\nMatrix ar2 :\n', ar2) # traditional code for x in range(ar1.shape[1]): for y in range(ar2.shape[0]): res[x, y] = ar1[x, y] + ar2[x, y] print('\nResult :\n', res)
Примечание. Matrix.shape возвращает размеры конкретной матрицы.
Matrix ar1 : [[11 22] [33 44]] Matrix ar2 : [[55 66] [77 88]] Result : [[ 66. 88.] [ 110. 132.]]
2 Использование оператора «+»
Этот метод обеспечивает большую эффективность кода, поскольку он уменьшает LOC (количество строк кода) и, таким образом, оптимизирует код.
import numpy as p ar1 = p.matrix([[11, 22], [33, 44]]) ar2 = p.matrix([[55, 66], [77, 88]]) res = p.matrix(p.zeros((2,2))) print('Matrix ar1 :\n', ar1) print('\nMatrix ar2 :\n', ar2) res = ar1 + ar2 # using '+' operator print('\nResult :\n', res)
Matrix ar1 : [[11 22] [33 44]] Matrix ar2 : [[55 66] [77 88]] Result : [[ 66 88] [110 132]]
Умножение матриц
Умножение матриц в Python можно обеспечить следующими способами:
- Скалярное произведение;
- Матричный продукт.
Скалярное произведение
В скалярном произведении постоянное значение умножается на каждый элемент матрицы.
Оператор ‘*’ используется для умножения скалярного значения на элементы входной матрицы.
import numpy as p matA = p.matrix([[11, 22], [33, 44]]) print("Matrix A:\n", matA) print("Scalar Product of Matrix A:\n", matA * 10)
Matrix A: [[11 22] [33 44]] Scalar Product of Matrix A: [[110 220] [330 440]]
Функция numpy.dot()
Как упоминалось выше, мы можем использовать оператор ‘*’ только для скалярного умножения. Чтобы продолжить умножение матриц, нам нужно использовать numpy.dot() .
Функция numpy.dot() принимает массивы NumPy в качестве значений параметров и выполняет умножение в соответствии с основными правилами умножения матриц.
import numpy as p matA = p.matrix([[11, 22], [33, 44]]) matB = p.matrix([[2,2], [2,2]]) print("Matrix A:\n", matA) print("Matrix B:\n", matB) print("Dot Product of Matrix A and Matrix B:\n", p.dot(matA, matB))
Matrix A: [[11 22] [33 44]] Matrix B: [[2 2] [2 2]] Dot Product of Matrix A and Matrix B: [[ 66 66] [154 154]]
Вычитание
Оператор ‘-‘ используется для выполнения вычитания матриц.
import numpy as p matA = p.matrix([[11, 22], [33, 44]]) matB = p.matrix([[2,2], [2,2]]) print("Matrix A:\n", matA) print("Matrix B:\n", matB) print("Subtraction of Matrix A and Matrix B:\n",(matA - matB))
Matrix A: [[11 22] [33 44]] Matrix B: [[2 2] [2 2]] Subtraction of Matrix A and Matrix B: [[ 9 20] [31 42]]
Деление
Скалярное деление может выполняться на элементах матрицы в Python с помощью оператора ‘/’.
Оператор ‘/’ делит каждый элемент матрицы на скалярное / постоянное значение.
import numpy as p matB = p.matrix([[2,2], [2,2]]) print("Matrix B:\n", matB) print("Matrix B after Scalar Division operation:\n",(matB/2))
Matrix B: [[2 2] [2 2]] Matrix B after Scalar Division operation: [[ 1. 1.] [ 1. 1.]]
Транспонирование матрицы
Транспонирование матрицы в основном включает в себя переворачивание матрицы по соответствующим диагоналям, т. е. Меняет местами строки и столбцы входной матрицы. Строки становятся столбцами и наоборот.
Например: давайте рассмотрим матрицу A с размерами 3 × 2, т.е. 3 строки и 2 столбца. После выполнения операции транспонирования размеры матрицы A будут 2 × 3, т.е. 2 строки и 3 столбца.
Matrix.T основном выполняет транспонирование входной матрицы и создает новую в результате операции транспонирования.
import numpy matA = numpy.array([numpy.arange(10,15), numpy.arange(15,20)]) print("Original Matrix A:\n") print(matA) print('\nDimensions of the original MatrixA: ',matA.shape) print("\nTranspose of Matrix A:\n ") res = matA.T print(res) print('\nDimensions of the Matrix A after performing the Transpose Operation: ',res.shape)
Original Matrix A: [[10 11 12 13 14] [15 16 17 18 19]] Dimensions of the original MatrixA: (2, 5) Transpose of Matrix A: [[10 15] [11 16] [12 17] [13 18] [14 19]] Dimensions of the Matrix A after performing the Transpose Operation: (5, 2)
В приведенном выше фрагменте кода я создал матрицу размером 2 × 5, т.е. 2 строки и 5 столбцов.
После выполнения операции транспонирования размеры результирующей матрицы составляют 5 × 2, то есть 5 строк и 2 столбца.
Экспонента
Экспонента в матрице вычисляется поэлементно, то есть показатель степени каждого элемента вычисляется путем возведения элемента в степень входного скалярного значения.
import numpy matA = numpy.array([numpy.arange(0,2), numpy.arange(2,4)]) print("Original Matrix A:\n") print(matA) print("Exponent of the input matrix:\n") print(matA ** 2) # finding the exponent of every element of the matrix
Original Matrix A: [[0 1] [2 3]] Exponent of the input matrix: [[0 1] [4 9]]
В приведенном выше фрагменте кода мы выяснили показатель степени каждого элемента входной матрицы, возведя его в степень 2.
Операция умножения с использованием методов NumPy
Для выполнения умножения матрицы NumPy можно использовать следующие методы:
- Использование метода multiply();
- метода matmul();
- Использование метода dot() — уже описано в этой статье.
Метод 1: использование метода multiply()
Метод numpy.multiply() выполняет поэлементное умножение входной матрицы.
import numpy as p matA = p.matrix([[10, 20], [30, 40]]) print('MatrixA:\n', matA) matB = p.matrix('[10,20;30,40]', dtype=p.int32) # Setting the data-type to int print('\nMatrixB:\n', matB) print("Matrix multplication using numpy.matrix() method") res = p.multiply(matA,matB) print(res)
MatrixA: [[10 20] [30 40]] MatrixB: [[10 20] [30 40]] Matrix multplication using numpy.matrix() method [[ 100 400] [ 900 1600]]
Метод 2: использование метода matmul()
Метод numpy.matmul() выполняет матричное произведение.
import numpy as p matA = p.matrix([[10, 20], [30, 40]]) print('MatrixA:\n', matA) matB = p.matrix('[10,20;30,40]', dtype=p.int32) # Setting the data-type to int print('\nMatrixB:\n', matB) print("Matrix multplication using numpy.matmul() method") res = p.matmul(matA,matB) print(res)
MatrixA: [[10 20] [30 40]] MatrixB: [[10 20] [30 40]] Matrix multplication using numpy.matmul() method [[ 700 1000] [1500 2200]]
Транспонирование матрицы NumPy
Функция numpy.transpose() выполняет транспонирование.
import numpy matA = numpy.array([numpy.arange(10,15), numpy.arange(15,20)]) print("Original Matrix A:\n") print(matA) print('\nDimensions of the original MatrixA: ',matA.shape) print("\nTranspose of Matrix A:\n ") res = matA.transpose() print(res) print('\nDimensions of the Matrix A after performing the Transpose Operation: ',res.shape)
Original Matrix A: [[10 11 12 13 14] [15 16 17 18 19]] Dimensions of the original MatrixA: (2, 5) Transpose of Matrix A: [[10 15] [11 16] [12 17] [13 18] [14 19]] Dimensions of the Matrix A after performing the Transpose Operation: (5, 2)
Как создать матрицу в Python: пошаговое руководство с примерами и кодом
Матрица — это двумерный массив, состоящий из элементов, расположенных в виде таблицы. В Python, создание и работа с матрицами является важной задачей при разработке программ. В этой статье мы рассмотрим, как создать матрицу в Python и выполнить некоторые операции с ней.
Способ 1: Используя вложенный список
Один из самых простых способов создания матрицы в Python — использование вложенного списка. Внешний список представляет строки матрицы, а внутренние списки представляют элементы в каждой строке.
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
В этом примере мы создали матрицу 3×3 с числами от 1 до 9. Для обращения к элементам матрицы, мы используем индексы. Например, чтобы получить значение элемента в первой строке и втором столбце, мы можем использовать следующий код:
element = matrix[0][1] print(element) # Output: 2
Способ 2: Используя библиотеку NumPy
Если вам требуются более продвинутые возможности работы с матрицами, вам может понадобиться использовать библиотеку NumPy. NumPy предоставляет мощные инструменты для создания и манипулирования большими массивами данных, включая матрицы. Для использования библиотеки NumPy, вам необходимо установить ее, как показано ниже:
pip install numpy
После установки, вы можете импортировать библиотеку и использовать ее для создания матриц:
import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
В этом примере мы использовали функцию array() из библиотеки NumPy для создания матрицы. Теперь мы можем выполнять различные операции с матрицей, такие как сложение, вычитание, умножение и другие.
Операции с матрицами
- Сложение матриц:
matrix1 = [[1, 2], [3, 4]] matrix2 = [[5, 6], [7, 8]] result = [[0, 0], [0, 0]] for i in range(len(matrix1)): for j in range(len(matrix1[0])): result[i][j] = matrix1[i][j] + matrix2[i][j] print(result) # Output: [[6, 8], [10, 12]]
matrix1 = [[1, 2], [3, 4]] matrix2 = [[5, 6], [7, 8]] result = [[0, 0], [0, 0]] for i in range(len(matrix1)): for j in range(len(matrix2[0])): for k in range(len(matrix2)): result[i][j] += matrix1[i][k] * matrix2[k][j] print(result) # Output: [[19, 22], [43, 50]]
- Транспонирование матрицы:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] transposed_matrix = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] for i in range(len(matrix)): for j in range(len(matrix[0])): transposed_matrix[j][i] = matrix[i][j] print(transposed_matrix) # Output: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Это только некоторые из операций, которые вы можете выполнять с матрицами в Python. Открытие документации Python и NumPy поможет вам узнать больше о возможностях.
Вывод
В этой статье мы рассмотрели два способа создания матрицы в Python: использование вложенного списка и использование библиотеки NumPy. Мы также показали, как выполнять различные операции с матрицами, такие как сложение, умножение и транспонирование. Надеемся, что эта информация была полезной для вас.
Работа с Matrix в Python
Для работы с Matrix Python нам необходимо импортировать модуль numpy. Матрица используется для операций с матрицей, которая может использоваться для научных целей, обработки изображений и т.д.
Как создать матрицу?
Согласно Википедии, матрица – это прямоугольный массив чисел, символов или выражений, упорядоченный по строкам и столбцам. Итак, в следующем коде мы будем инициализировать различные типы матриц.
Обычно матрица создается с помощью функции numpy.matix(). Мы можем использовать numpy.shape, чтобы узнать размер матрицы. Смотрите следующий пример кода матрицы.
import numpy as np # create 2x2 matrix a = np.matrix([[1, 2], [3, 4]]) # using array of array print('2x2 matrix is:\n', a) # using shape attribute to get the tuple describing matrix shape print('The dimension of the matrix is :', a.shape) # using MatLab syntax in string b = np.matrix('[1,2;3,4;5,6]', dtype=np.int32) # limiting the data-type to int print('\n3x2 matrix is:\n', b) # using shape attribute to get the tuple describing matrix shape print('The dimension of the matrix is :', b.shape) # using numpy.random.rand(row, column) to generate array of random element c = np.matrix(np.random.rand(3, 3), dtype=np.float32) # considering the data-type as float print('\n3x3 random element matrix is:\n', c) # using shape attribute to get the tuple describing matrix shape print('The dimension of the matrix is :', c.shape)
Вы получите результат, как на следующем изображении.
Добавление матрицы
Код для сложения матриц достаточно сложен для написания вручную. Благодаря модулю numpy мы можем просто использовать оператор + для добавления матрицы. Итак, в следующем примере кода мы увидим, как писать код сложения вручную, а также с помощью оператора +.
import numpy as np # create two 2x2 matrix a = np.matrix([[1, 2], [3, 4]]) # using array of array b = np.matrix([[5, 6], [7, 8]]) # using array of array result = np.matrix(np.zeros((2,2))) # result matrix print('A matrix :\n', a) print('\nB matrix :\n', b) # traditional code for i in range(a.shape[1]): for j in range(a.shape[0]): result[i, j] = a[i, j] + b[i, j] print('\nManually calculated result :\n', result) # get the result by simply using + operator resultB = a + b print('\nCalculated using matrix + operator :\n', resultB)
A matrix : [[1 2] [3 4]] B matrix : [[5 6] [7 8]] Manually calculated result : [[ 6. 8.] [ 10. 12.]] Calculated using matrix + operator : [[ 6 8] [10 12]]
Умножение и транспонирование матриц, обратная матрица
В предыдущем разделе мы обсудили преимущество Python Matrix в том, что он просто упрощает для нас задачу. Таким образом, мы можем просто умножить две матрицы, получить инверсию и транспонирование матрицы.
Как мы видели ранее, оператор + добавляет две матрицы, здесь мы можем просто использовать оператор * для умножения матриц. При этом количество столбцов в первой матрице должно быть равно количеству строк во второй матрице.
Мы можем получить инверсию матрицы, используя функцию getI() и использовать getT() для транспонирования матрицы. Давайте посмотрим на пример:
import numpy as np # initialize a 3x2 matrix of random values matA = np.matrix(np.random.rand(3, 2)) # print the first matrix print('The first matrix is :\n', matA) # initialize a 2x3 matrix of random values matB = np.matrix(np.random.rand(2, 3)) # print the second matrix print('\nThe second matrix is :\n', matB) # multiply two matrix using * operator result = matA * matB # print the resultant matrix print('\nMatrix multiplication result :\n', result) # get the inverse of the first matrix inverseMatA = matA.getI() print('\nThe inverse of the first matrix is :\n', inverseMatA) # get the transpose matrix of the second matrix transposeMatB = matB.getT() print('\nThe transpose of the second matrix is :\n', transposeMatB)
Поскольку мы использовали случайные значения. Таким образом, элементы матрицы будут разными. Вывод вышеуказанного кода приведен ниже:
The first matrix is : [[ 0.88847844 0.01832413] [ 0.08538396 0.20208474] [ 0.92615527 0.8963927 ]] The second matrix is : [[ 0.03454971 0.89908281 0.08825769] [ 0.46224998 0.63173062 0.91734146]] Matrix multiplication result : [[ 0.039167 0.81039161 0.09522454] [ 0.09636365 0.20443036 0.1929165 ] [ 0.44635589 1.398969 0.90403851]] The inverse of the first matrix is : [[ 1.12771189 -0.15722127 0.01239153] [-1.13143853 0.40000541 1.04853336]] The transpose of the second matrix is : [[ 0.03454971 0.46224998] [ 0.89908281 0.63173062] [ 0.08825769 0.91734146]]