Содержание

Как создать матрицу в Python: инструкция

Матрицы являются одним из основных объектов в математике. Они используются для представления и манипулирования данными в виде таблицы, состоящей из строк и столбцов. Их используют для решения систем линейных уравнений, определения матричных действий, преобразования координат и многого другое.

В этой статье мы опишем несколько способов создать матрицу в Python. И дополнительно рассмотрим некоторые основные операции, такие как сложение, умножение и определение обратной матрицы.

Что такое матрица

Матрица — это таблица из чисел, которая используется в математике и инженерных науках для представления данных. Матрицы имеют форму таблицы, состоящей из строк и столбцов. Каждый элемент имеет свой уникальный индекс, обозначающий строку и столбец, в котором он находится. Например, матрица размером 3×3 будет иметь 3 строки и 3 столбца, и каждый элемент будет иметь индекс вида (i, j), где i — номер строки, а j — номер столбца.

Создание матрицы

В Python существует несколько способов создания матрицы. Ниже приведены некоторые из них:

  • С помощью списков. Можно создать матрицу, используя вложенные списки. Каждый вложенный список будет соответствовать одной строке. Так можно создать квадратную матрицу Python:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • С помощью NumPy. NumPy — это библиотека для математических вычислений и обработки данных. В ней есть класс Array, который можно использовать для создания матрицы:
import numpy as np 

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

Если вам нужно производить стандартные математические операции с матрицами, то стоит использовать NumPy. Его проще использовать и все операции уже реализованы в библиотеке. А если вы хотите самостоятельно создавать методы, например, в образовательных целях, или же планируете совершать нестандартные манипуляции, то используйте вложенные списки. 

Теперь рассмотрим матричные операции и поработаем с ними с помощью вложенных списков и NumPy.

Матричные операции

Вот список основных манипуляций:

  • Сложение. Две матрицы можно сложить, если их размеры совпадают. Каждый элемент итоговой матрицы будет равен сумме соответствующих элементов исходных матриц.
  • Вычитание. Одну матрицу можно вычесть из другой, если их размеры совпадают. Каждый элемент итоговой матрицы будет равен разности соответствующих элементов исходных матриц.
  • Умножение на число. Каждый элемент итоговой матрицы будет равен произведению соответствующего элемента исходной матрицы на число.
  • Произведение матриц. Матрицы можно перемножить, если число столбцов первой матрицы равно числу строк второй матрицы. В результате получится новая матрица с размером, соответствующим числу строк первой матрицы и числу столбцов второй матрицы. Более подробно эту операцию мы разберем чуть дальше.
  • Транспонирование матрицы.
     Транспонирование — это операция, в которой строки и столбцы меняются местами. Т.е. первый столбец становится первой строкой, второй столбец — второй строкой и так далее.
  • Нахождение обратной матрицы. Матрица B будет являться обратной матрицей для матрицы A, если результатом операции A*B является единичная матрица.

Сложение

Важно не забывать, что при сложении двух матриц их размеры должны совпадать.

Вот пример сложения с помощью вложенных списков и циклов:

matrix1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
matrix2 = [[9, 8, 7], [6, 5, 4], [3, 2, 1]] 
result = [[0, 0, 0], [0, 0, 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)

Результат:

[[10, 10, 10], [10, 10, 10], [10, 10, 10]]

Вот аналогичное сложение с помощью метода add() из библиотеки NumPy:

import numpy as np 

matrix1 = np. array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
matrix2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]]) 

result = np.add(matrix1, matrix2)

print(result)

Результат:

[[10 10 10]
 [10 10 10]
 [10 10 10]]

Вычитание 

В Python можно выполнять вычитание матриц с помощью цикла или метода subtract() из библиотеки NumPy. При вычитании размеры должны совпадать.

Вычитание с помощью цикла:

matrix1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
matrix2 = [[9, 8, 7], [6, 5, 4], [3, 2, 1]] 
result = [[0, 0, 0], [0, 0, 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)

Результат:

[[-8, -6, -4], [-2, 0, 2], [4, 6, 8]]

Вычитание с помощью метода subtract() из библиотеки NumPy:

import numpy as np 

matrix1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
matrix2 = np. array([[9, 8, 7], [6, 5, 4], [3, 2, 1]]) 

result = np.subtract(matrix1, matrix2) 

print(result)

Результат:

[[-8 -6 -4]
 [-2  0  2]
 [ 4  6  8]]

Умножение на число

В Python умножение матрицы на число можно реализовать с помощью цикла или воспользоваться методом dot() из библиотеки NumPy.

При умножении матрицы на число, каждый элемент умножается на это число.

Умножение с помощью цикла:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
scalar = 2 
result = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 

for i in range(len(matrix)): 
for j in range(len(matrix[0])): 
        result[i][j] = matrix[i][j] * scalar 

print(result)

Результат:

[[2, 4, 6], [8, 10, 12], [14, 16, 18]]

Вот пример работы метода dot() из библиотеки NumPy с теми же вводными:

import numpy as np 

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
scalar = 2 

result = np. dot(matrix, scalar)

print(result)

Результат:

[[ 2  4  6]
 [ 8 10 12]
[14 16 18]]

Также вместо метода dot() можно использовать знак операции умножения *:

import numpy as np 

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
scalar = 2 

result = matrix * scalar 

print(result)

Результат:

[[ 2  4  6]
 [ 8 10 12]
 [14 16 18]]

В большинстве случаев метод dot() работает быстрее вручную реализованных циклов.

Произведение матриц

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

Как и прежде, реализуем произведение с помощью циклов и 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(matrix2[0])):
        for k in range(len(matrix2)): result[i][j] += matrix1[i][k] * matrix2[k][j]

print(result)

Результат: 

[[19, 22], [43, 50]]

В NumPy для матричного умножения используется метода dot():

import numpy as np 

matrix1 = np.array([[1, 2], [3, 4]]) 
matrix2 = np.array([[5, 6], [7, 8]]) 

result = np.dot(matrix1, matrix2) 

print(result)

Результат:

[[19 22]
 [43 50]]

Аналогично методу dot() работает операция @:

import numpy as np 

matrix1 = np.array([[1, 2], [3, 4]]) 
matrix2 = np.array([[5, 6], [7, 8]]) 

result = matrix1 @ matrix2 

print(result)

Результат:

[[19 22]
 [43 50]]

Использование метода dot() или оператора @ даёт более быстрый, по сравнению с использованием вручную реализованных циклов, результат.  

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

Транспонирование

Транспонирование — это операция, в результате которой строки исходной матрицы становятся столбцами новой матрицы, а столбцы — строками.

В Python можно выполнить транспонирование с помощью свойства T или метода transpose() из библиотеки NumPy.

Пример транспонирования с использованием свойства T:

import numpy as np 
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 

result = matrix.T

print(result)

Результат:

[[1 4 7]
 [2 5 8]
 [3 6 9]]

И пример транспонирования с использованием метода transpose():

import numpy as np
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

result = np.transpose(matrix)

print(result)

Результат:

[[1 4 7]
 [2 5 8]
 [3 6 9]]

В обоих случаях результат одинаковый.

С помощью цикла транспонирование можно реализовать следующим образом:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
result = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

for i in range(len(matrix)):
for j in range(len(matrix[0])):
result[j][i] = matrix[i][j]

print(result)

Результат:

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Этот метод может быть медленным и неэффективным для больших матриц, поэтому для более быстрого и эффективного решения рекомендуется использовать NumPy.

Нахождение обратной матрицы

Обратная матрица — это матрица, которая при умножении на исходную матрицу в результате дает единичную матрицу (с единицами на диагонали и нулями в остальных ячейках).

В Python можно найти обратную матрицу с помощью метода inv() из библиотеки NumPy.

import numpy as np 

matrix = np.array([[1, 2], [3, 4]]) 

result = np.linalg.inv(matrix) 

print(result)

Результат:

[[-2.   1. ]
 [ 1. 5 -0.5]]

Если матрица не имеет обратной матрицы, то метод inv() вызовет исключение LinAlgError: Singular matrix.

Чтобы проверить, имеет ли матрица обратную, используйте метод det() из библиотеки NumPy, который возвращает определитель матрицы. Если определитель равен нулю, то матрица вырожденная и она не имеет обратной матрицы:

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
determinant = np.linalg.det(matrix)

if determinant == 0:
print("The matrix does not have an inverse.")
else:
result = np.linalg.inv(matrix)
print(result)

Нахождение обратной матрицы с помощью циклов может быть достаточно сложным и трудоемким процессом, особенно для больших матриц. Поэтому рекомендуем использовать NumPy.

Заключение

Матрицы являются важной концепцией в линейной алгебре и часто используются в различных областях, таких как искусственный интеллект, графика и оптимизация. В Python представлено множество инструментов для работы с матрицами, включая библиотеку NumPy. Понимание матриц и их операций может быть полезным для решения множества практических задач в различных областях.

Изучаем матрицы в питоне и массивы NumPy в Python

0 ∞ 1

Матрица — это двухмерная структура данных, в которой числа расположены в виде строк и столбцов. Например:

Эта матрица является матрицей три на четыре, потому что она состоит из 3 строк и 4 столбцов.

  • Матрицы в Python
  • NumPy массивы в Python
  • Как создать массив NumPy?
    • Массив целых чисел, чисел с плавающей точкой и составных чисел
    • Массив нулей и единиц
    • Использование arange() и shape()
  • Операции с матрицами
    • Сложение двух матриц или сумма элементов массива Python
    • Умножение двух матриц Python
    • Транспонирование матрицы питон
  • Доступ к элементам матрицы, строкам и столбца
    • Доступ к элементам матрицы
    • Доступ к строкам матрицы
    • Доступ к столбцам матрицы
  • Разделение матрицы

Python не имеет встроенного типа данных для матриц. Но можно рассматривать список как матрицу. Например:

A = [[1, 4, 5], 
    [-5, 8, 9]]

Этот список является матрицей на 2 строки и 3 столбца.

Обязательно ознакомьтесь с документацией по спискам Python, прежде чем продолжить читать эту статью.

Давайте посмотрим, как работать с вложенным списком.

A = [[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
print("A =", A) 
print("A[1] =", A[1])      # вторая строка
print("A[1][2] =", A[1][2])   # третий элемент второй строки
print("A[0][-1] =", A[0][-1])   # последний элемент первой строки
column = [];        # пустой список
for row in A:
  column.append(row[2])   
print("3rd column =", column)

Когда мы запустим эту программу, результат будет следующий:

A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]]
A [1] = [-5, 8, 9, 0]
A [1] [2] = 9
A [0] [- 1] = 12
3-й столбец = [5, 9, 11]

Использование вложенных списков в качестве матрицы подходит для простых вычислительных задач. Но в Python есть более эффективный способ работы с матрицами – NumPy .

NumPy — это расширение для научных вычислений, которое поддерживает мощный объект N-мерного массива. Прежде чем использовать NumPy, необходимо установить его. Для получения дополнительной информации,

  • Ознакомьтесь: Как установить NumPy Python?
  • Если вы работаете в Windows, скачайте и установите дистрибутив anaconda Python. Он поставляется вместе с NumPy и другими расширениями.

После установки NumPy можно импортировать и использовать его.

NumPy предоставляет собой многомерный массив чисел (который на самом деле является объектом). Давайте рассмотрим приведенный ниже пример:

import numpy as np
a = np.array([1, 2, 3])
print(a)               # Вывод: [1, 2, 3]
print(type(a))         # Вывод: <class 'numpy.ndarray'>

Как видите, класс массива NumPy называется ndarray.

Существует несколько способов создания массивов NumPy.

import numpy as np
A = np.array([[1, 2, 3], [3, 4, 5]])
print(A)
A = np.array([[1.1, 2, 3], [3, 4, 5]]) # Массив чисел с плавающей запятой
print(A)
A = np. array([[1, 2, 3], [3, 4, 5]], dtype = complex) # Массив составных чисел
print(A)

Когда вы запустите эту программу, результат будет следующий:

[[1 2 3]
 [3 4 5]]
[[1.1 2. 3.]
 [3. 4. 5.]]
[[1. + 0.j 2. + 0.j 3. + 0.j]
 [3. + 0.j 4. + 0.j 5. + 0.j]]
import numpy as np
zeors_array = np.zeros( (2, 3) )
print(zeors_array)
'''
 Вывод:
 [[0. 0. 0.]
  [0. 0. 0.]]
'''
ones_array = np.ones( (1, 5), dtype=np.int32 ) // указание dtype
print(ones_array)      # Вывод: [[1 1 1 1 1]]

Здесь мы указали dtype — 32 бита (4 байта). Следовательно, этот массив может принимать значения от -2-31 до 2-31-1.

import numpy as np
A = np.arange(4)
print('A =', A)
B = np.arange(12).reshape(2, 6)
print('B =', B)
''' 
Вывод:
A = [0 1 2 3]
B = [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
'''

Узнайте больше о других способах создания массива NumPy .

Выше мы привели пример сложение, умножение матриц и транспонирование матрицы. Мы использовали вложенные списки, прежде чем создавать эти программы.

Рассмотрим, как выполнить ту же задачу, используя массив NumPy.

Мы используем оператор +, чтобы сложить соответствующие элементы двух матриц NumPy.

import numpy as np
A = np.array([[2, 4], [5, -6]])
B = np.array([[9, -3], [3, 6]])
C = A + B      # сложение соответствующих элементов
print(C)
''' 
Вывод:
[[11  1]
 [ 8  0]]
 '''

Чтобы умножить две матрицы, мы используем метод dot(). Узнайте больше о том, как работает numpy.dot .

Примечание: * используется для умножения массива (умножения соответствующих элементов двух массивов), а не умножения матрицы.

import numpy as np
A = np.array([[3, 6, 7], [5, -3, 0]])
B = np.array([[1, 1], [2, 1], [3, -3]])
C = a.dot(B)
print(C)
''' 
Вывод:
[[ 36 -12]
 [ -1   2]]
'''

Мы используем numpy.transpose для вычисления транспонирования матрицы.

import numpy as np
A = np.array([[1, 1], [2, 1], [3, -3]])
print(A.transpose())
''' 
Вывод:
[[ 1  2  3]
 [ 1  1 -3]]
'''

Как видите, NumPy значительно упростил нашу задачу.

Также можно получить доступ к элементам матрицы, используя индекс. Начнем с одномерного массива NumPy.

import numpy as np
A = np.array([2, 4, 6, 8, 10])
print("A[0] =", A[0])     # Первый элемент     
print("A[2] =", A[2])     # Третий элемент     
print("A[-1] =", A[-1])   # Последний элемент     

Когда вы запустите эту программу, результат будет следующий:

A [0] = 2
A [2] = 6
A [-1] = 10

Теперь выясним, как получить доступ к элементам двухмерного массива (который в основном представляет собой матрицу).

import numpy as np
A = np.array([[1, 4, 5, 12],
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])
#  Первый элемент первой строки
print("A[0][0] =", A[0][0])  
# Третий элемент второй строки
print("A[1][2] =", A[1][2])
# Последний элемент последней строки
print("A[-1][-1] =", A[-1][-1])     

Когда мы запустим эту программу, результат будет следующий:

A [0] [0] = 1
A [1] [2] = 9
A [-1] [- 1] = 19
import numpy as np
A = np.
array([[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]]) print("A[0] =", A[0]) # Первая строка print("A[2] =", A[2]) # Третья строка print("A[-1] =", A[-1]) # Последняя строка (третья строка в данном случае)

Когда мы запустим эту программу, результат будет следующий:

A [0] = [1, 4, 5, 12]
A [2] = [-6, 7, 11, 19]
A [-1] = [-6, 7, 11, 19]
import numpy as np
A = np.array([[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])
print("A[:,0] =",A[:,0]) # Первый столбец
print("A[:,3] =", A[:,3]) # Четвертый столбец
print("A[:,-1] =", A[:,-1]) # Последний столбец (четвертый столбец в данном случае)

Когда мы запустим эту программу, результат будет следующий:

A [:, 0] = [1 -5 -6]
A [:, 3] = [12 0 19]
A [:, - 1] = [12 0 19]

Если вы не знаете, как работает приведенный выше код, прочтите раздел «Разделение матрицы».

Разделение одномерного массива NumPy аналогично разделению списка. Рассмотрим пример:

import numpy as np
letters = np. array([1, 3, 5, 7, 9, 7, 5])
# с 3-го по 5-ый элементы
print(letters[2:5])        # Вывод: [5, 7, 9]
# с 1-го по 4-ый элементы
print(letters[:-5])        # Вывод: [1, 3]   
# с 6-го до последнего элемента
print(letters[5:])         # Вывод:[7, 5]
# с 1-го до последнего элемента
print(letters[:])          # Вывод:[1, 3, 5, 7, 9, 7, 5]
# список в обратном порядке
print(letters[::-1])          # Вывод:[5, 7, 9, 7, 5, 3, 1]

Теперь посмотрим, как разделить матрицу.

import numpy as np
A = np.array([[1, 4, 5, 12, 14], 
    [-5, 8, 9, 0, 17],
    [-6, 7, 11, 19, 21]])
print(A[:2, :4])  # две строки, четыре столбца
''' Вывод:
[[ 1  4  5 12]
 [-5  8  9  0]]
'''
print(A[:1,])  # первая строка, все столбцы
''' Вывод:
[[ 1  4  5 12 14]]
'''
print(A[:,2])  # все строки, второй столбец
''' Вывод:
[ 5  9 11]
'''
print(A[:, 2:5])  # все строки, с третьего по пятый столбец
''' Вывод:
[[ 5 12 14]
 [ 9  0 17]
 [11 19 21]]
'''

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

Вадим Дворниковавтор-переводчик статьи «Python Matrices and NumPy Arrays»

Дайте знать, что вы думаете по этой теме материала в комментариях. За комментарии, дизлайки, отклики, лайки, подписки низкий вам поклон!

numpy.matrix — NumPy v1.24 Manual

Возвращает матрицу из объекта, подобного массиву, или из строки данных. Матрица — это специализированный двумерный массив, сохраняющий свою двумерную природу. посредством операций. Он имеет определенные специальные операторы, такие как * . (умножение матрицы) и ** (мощность матрицы).

все ([ось, выход])

Проверить, все ли матричные элементы вдоль заданной оси оцениваются как True.

любой ([ось, вне])

Проверяет, имеет ли какой-либо элемент массива вдоль заданной оси значение True.

argmax ([ось, выход])

Индексы максимальных значений по оси.

аргмин ([ось, выход])

Индексы минимальных значений по оси.

argpartition (kth[ ось, вид, порядок])

Возвращает индексы, которые будут разбивать этот массив.

argsort ([ось, вид, порядок])

Возвращает индексы для сортировки этого массива.

astype (dtype[order,casting, subok, copy])

Копия массива, приведенная к указанному типу.

замена байтов ([на месте])

Поменять местами байты элементов массива

выбор (выбор [ выход, режим])

Используйте индексный массив для создания нового массива из набора вариантов.

зажим ([мин, макс, выход])

Возвращает массив, значения которого ограничены [мин., макс.] .

сжать (состояние[ ось, выход])

Возвращает выбранные срезы этого массива вдоль заданной оси.

соединение ()

Комплексно-сопряженные все элементы.

сопряженный ()

Вернуть комплексно-сопряженное число поэлементно.

копия ([заказ])

Вернуть копию массива.

cumprod ([ось, тип d, выход])

Возвращает совокупное произведение элементов по заданной оси.

общая сумма ([ось, тип d, выход])

Возвращает совокупную сумму элементов по заданной оси.

диагональ ([смещение, ось 1, ось 2])

Возврат указанных диагоналей.

дамп (файл)

Дамп рассола массива в указанный файл.

отвалы ()

Возвращает пиксель массива в виде строки.

заполнить (значение)

Заполнить массив скалярным значением.

сплющить ([заказ])

Вернуть сглаженную копию матрицы.

гетА ()

Вернуть себя как объект ndarray .

getA1 ()

Вернуть себя как сглаженный ndarray .

getH ()

Возвращает (комплексное) сопряженное транспонирование self .

получить ()

Возвращает (мультипликативный) инверсию обратимого self .

получить ()

Возвращает транспонирование матрицы.

getfield (dtype[ смещение])

Возвращает поле заданного массива определенного типа.

элемент (*аргументы)

Скопируйте элемент массива в стандартный скаляр Python и верните его.

набор элементов (*args)

Вставка скаляра в массив (скаляр приводится к dtype массива, если это возможно)

макс. ([ось, выход])

Возвращает максимальное значение по оси.

среднее значение ([ось, тип d, выход])

Возвращает среднее значение элементов матрицы по заданной оси.

мин. ([ось, выход])

Возвращает минимальное значение по оси.

newbyteorder ([new_order])

Вернуть массив с теми же данными, которые просматриваются с другим порядком байтов.

ненулевой ()

Возвращает индексы ненулевых элементов.

раздел (kth[ ось, вид, порядок])

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

prod ([ось, тип d, выход])

Возвращает произведение элементов массива по заданной оси.

ptp ([ось, выход])

Размах (максимум-минимум) значения по заданной оси.

put (индексы, значения[ режим])

Установить a. flat[n] = values[n] для всех n в индексах.

равель ([заказ])

Возвращает сглаженную матрицу.

повтор (повторяет [ ось])

Повторить элементы массива.

изменить форму (форма [ порядок])

Возвращает массив, содержащий те же данные с новой формой.

изменение размера (new_shape[ refcheck])

Изменение формы и размера массива на месте.

раунд ([десятичные числа, выход])

Вернуть a с округлением каждого элемента до заданного числа десятичных знаков.

searchsorted (v[ сторона, сортировщик])

Найдите индексы, в которые элементы v должны быть вставлены в a для сохранения порядка.

setfield (val, dtype[ offset])

Поместите значение в указанное место в поле, определяемом типом данных.

setflags ([write, align, uic])

Установить флаги массива WRITEABLE, ALIGNED, WRITEBACKIFCOPY соответственно.

sort ([ось, вид, порядок])

Сортировка массива на месте.

сжать ([ось])

Возврат возможно измененной матрицы.

станд. ([ось, dtype, выход, ddof])

Возвращает стандартное отклонение элементов массива по заданной оси.

сумма ([ось, тип d, выход])

Возвращает сумму элементов матрицы по заданной оси.

оси подкачки (ось 1, ось 2)

Вернуть вид массива с осью 1 и осью 2 , переставленными местами.

взять (индексы [ ось, выход, режим])

Возвращает массив, сформированный из элементов и по заданным индексам.

тобайт ([порядок])

Создание байтов Python, содержащих необработанные байты данных в массиве.

tofile (fid[ sep, format])

Запись массива в файл в текстовом или двоичном виде (по умолчанию).

список ()

Вернуть матрицу в виде (возможно, вложенного) списка.

тостринг ([заказ])

Псевдоним совместимости для tobytes с точно таким же поведением.

трассировка ([смещение, ось 1, ось 2, dtype, выход])

Возвращает сумму по диагоналям массива.

транспонировать (*оси)

Возвращает вид массива с транспонированными осями.

var ([ось, dtype, out, ddof])

Возвращает дисперсию элементов матрицы по заданной оси.

вид ([dtype][ type])

Новый вид массива с теми же данными.

Матрица Python — Javatpoint

следующий → ← предыдущая

В этом уроке мы узнаем о матрицах Python. В Python матричный объект похож на вложенные списки, поскольку они многомерны. Мы увидим, как создать матрицу с использованием массивов Numpy. После этого мы увидим различные методы матричных операций и примеры для лучшего понимания.

Что такое матрица в Python?

Матрица в Python — это прямоугольный массив Numpy. Этот массив должен быть двумерным. Он содержит данные, хранящиеся в строках и столбцах массива. В матрице Python горизонтальные ряды элементов называются «строками», а вертикальные ряды элементов называются «столбцами». Строки и столбцы накладываются друг на друга, как вложенный список. Если матрица содержит r строк и c столбцов, где r и c — положительные целые числа, то r x c определяет порядок этого матричного объекта.

Мы можем хранить строки, целые числа и объекты других типов данных в матрице. Данные хранятся в стопках строк и столбцов в матрице. Матрица является важной структурой данных для вычислений в математике и естественных науках. В Python мы рассматриваем список списков или вложенный список как матрицу, поскольку Python не включает встроенный тип для матричного объекта.

В ходе этого урока мы рассмотрим следующий список методов работы с матрицами.

  • Добавление матрицы
  • Умножение матриц
  • Оператор умножения матриц
  • Умножение матриц без Numpy
  • Матрица, обратная
  • Транспонирование матрицы
  • Матрица в массив

Как работают матрицы в Python?

Мы записываем данные в двумерный массив для создания матрицы. Делается это следующим образом:

Пример

[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]

Отображает матрицу, состоящую из 3 строк и 5 столбцов, поэтому ее размер равен 3×5. Объекты целочисленного типа данных составляют данные в этой матрице. Row1, первая строка, имеет значения (2, 3, 5, 7, 6), тогда как Row2 имеет значения (3, 2, 6, 7, 2), а Row3 имеет значения 5, 7, 2, 6, 1. Что касается столбцы, столбец 1 имеет значения (2, 3, 5), столбец 2 имеет значения (3, 2, 7) и так далее.

Пример

[ 0, 0, 1 0, 1, 0 1, 0, 0]

Отображает матрицу, состоящую из 3 строк и 3 столбцов, поэтому ее размер равен 3×3. Такие матрицы, имеющие равные строки и столбцы, называются квадратными матрицами.

Точно так же Python позволяет пользователям хранить свои данные в матрице размеров m x n. Мы можем выполнять сложение матриц, умножение, транспонирование и другие операции над структурой, подобной матрице.

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

Массив NumPy

Программное обеспечение для научных вычислений NumPy поддерживает надежный объект N-мерного массива. Установка NumPy является обязательным условием для его использования в нашей программе.

NumPy можно использовать и импортировать после установки. Знание основ Numpy Array будет полезно для понимания матриц.

NumPy предоставляет массивы с несколькими измерениями элементов. Вот иллюстрация:

Код

# Программа Python, показывающая, как создать массив Numpy # Импорт numpy импортировать numpy как np # Создание пустого массива массив = np.array([4, 6, «Гарри»]) печать (массив) print(«Тип данных объекта массива: «, type(массив))

Вывод:

 ['4' '6' 'Гарри']
Тип данных объекта массива: 
 

Как мы видим, массивы Numpy относятся к классу ndarray.

Пример создания матрицы с использованием массива Numpy

Подумайте о сценарии, в котором мы создаем запись оценок учащихся. Мы запишем имя и оценки учащегося по двум предметам: программированию на Python и матрице. Мы создадим двумерную матрицу, используя массив numpy, а затем изменим ее форму.

Код

# Программа Python для создания матрицы с использованием массива numpy # Импорт numpy импортировать numpy как np # Создание матрицы запись = np.array([[‘Итика’, 89, 91], [‘Адити’, 96, 82], [‘Гарри’, 91, 81], [‘Эндрю’, 87, 91], [‘Питер’, 72, 79]]) матрица = np.reshape (запись, (5,3)) print(«Матрица: \n», матрица)

Вывод:

 Матрица:
 [['Итика' '89' '91']
 ['Адити' '96' '82']
 ['Гарри' '91' '81']
 ['Эндрю' '87' '91']
 ['Питер' '72' '79']]
 

Пример создания матрицы с использованием метода матрицы Numpy

Мы можем использовать numpy. matrix для создания 2D-матрицы.

Код

# Программа на Python, показывающая, как создать матрицу с помощью матричного метода # импорт numpy импортировать numpy как np # Создание матрицы матрица = np.matrix(‘3,4;5,6’) печать (матрица)

Вывод:

 [[3 4]
 [5 6]]
 

Доступ к значениям матрицы

Индексы матрицы можно использовать для доступа к хранящимся в ней элементам. К данным, хранящимся в матрице, можно получить доступ, используя тот же подход, который мы используем для двумерного массива.

Код

# Программа Python для доступа к элементам матрицы # Импорт numpy импортировать numpy как np # Создание матрицы запись = np.array([[‘Итика’, 89, 91], [‘Адити’, 96, 82], [‘Гарри’, 91, 81], [‘Эндрю’, 87, 91], [‘Питер’, 72, 79]]) матрица = np.reshape (запись, (5,3)) # Доступ к записи Itika печать (матрица [0]) # Доступ к отметкам в матрице темы Эндрю print(«Отметки Эндрю в теме Matrix: «, matrix[3][2] )

Вывод:

 ['Итика' '89' '91']
Оценки Эндрю по предмету Матрица: 91
 

Методы создания двумерного массива Numpy или матрицы

Существует несколько способов создания двумерного массива NumPy и, следовательно, матрицы. Предоставление записей для строк и столбцов

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

Код

# Программа Python, показывающая, как создать массив Numpy # Импорт numpy импортировать numpy как np # Создание пустых массивов array1 = np.array([[4, 2, 7, 3], [2, 8, 5, 2]]) print(«Массив целых чисел типа данных: \n», array1) array2 = np.array([[1.5, 2.2, 3.1], [3, 4.4, 2]], dtype = «с плавающей запятой») print(«Массив данных типа float:\n», array2) array3 = np.array([[5, 3, 6], [2, 5, 7]], dtype = «сложный») print(«Массив комплексных чисел типа данных: \n», array3)

Вывод:

 Массив целых чисел типа данных:
 [[4 2 7 3]
 [2 8 5 2]]
Массив данных типа float:
 [[1,5 2,2 3,1]
 [3. 4.4 2. ]]
Массив комплексных чисел типа данных:
 [[5.+0.к 3.+0.к 6.+0.к]
 [2.+0.к 5.+0.к 7. +0.к]]
 

Массив, содержащий нули и единицы

Код

# Программа на Python, показывающая, как создать массив Numpy, содержащий нули и единицы # Импорт numpy импортировать numpy как np # Создание пустых массивов zeores_array = np.zeros ((3, 2)) печать (zeores_array) one_array = np.ones((2, 4), dtype=np.int64) печать (ones_array)

Вывод:

 [[0. 0.]
 [0. 0.]
 [0. 0.]]
[[1 1 1 1]
 [1 1 1 1]]
 

Здесь мы указали dtype на 64 бита.

Использование методов arange() и shape()

Код

# Программа на Python, показывающая, как создать массив Numpy, используя методы аранжировки () и формы () # Импорт numpy импортировать numpy как np # Создание пустых массивов массив1 = np.arange( 5 ) печать (массив1) array2 = np.arange( 6 ).reshape( 2, 3 ) печать (массив2)

Вывод:

 [0 1 2 3 4]
[[0 1 2]
 [3 4 5]]
 

Матричные операции Python

Дополнение к матрице Python

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

Код

# Программа на Python для добавления двух матриц без использования numpy # Создание матриц в виде вложенных списков матрица1 = [[23, 43, 12], [43, 13, 55], [23, 12, 13]] матрица2 = [[4, 2, -1], [5, 4, -34], [0, -4, 3]] матрица3 = [[0,1,0], [1,0,0], [0,0,1]] матрица4 = [[0,0,0], [0,0,0], [0,0,0]] длина_матрицы = длина (матрица1) #Добавление трех матриц с помощью вложенных циклов для строки в диапазоне (len (matrix1)): для столбца в диапазоне (len (matrix2 [0])): матрица4[строка][столбец] = матрица1[строка][столбец] + матрица2[строка][столбец] + матрица3[строка][столбец] #Распечатка финальной матрицы print(«Сумма матриц = «, matrix4)

Вывод:

 Сумма матриц = [[27, 46, 11], [49, 17, 21], [23, 8, 17]]
 

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

Оператор умножения матриц Python

В Python @ известен как оператор умножения. Давайте посмотрим пример, где мы будем использовать этот оператор для умножения двух матриц.

Код

# Программа на Python, показывающая, как создать матрицу с помощью матричного метода. # импорт numpy импортировать numpy как np # Создание матриц матрица1 = np.matrix(‘3,4;5,6’) матрица2 = np.matrix(‘4,6;8,2’) # Использование оператора умножения для умножения двух матриц печать (матрица1 @ матрица2)

Вывод:

 [[44 26]
 [68 42]]
 

Умножение матриц Python без использования Numpy

Другой способ умножения двух матриц — использование вложенных циклов. Вот пример, чтобы показать.

Код

# Программа на Python, показывающая, как создать матрицу с помощью матричного метода # импорт numpy импортировать numpy как np # Создание двух матриц матрица1 = [[4, 6, 2], [7, 4, 8], [6, 2, 7]] матрица2 = [[4, 6, 8, 2], [6, 5, 3, 7], [7, 3, 7, 6]] # Результатом будет матрица 3×4 вывод = [[0,0,0,0], [0,0,0,0], [0,0,0,0]] # Перебор строк матрицы1 для i в диапазоне (len (matrix1)): # перебираем столбцы матрицы2 для j в диапазоне (len (matrix2 [0])): # перебор строк матрицы2 для k в диапазоне (len (matrix2)): вывод[i][j] += матрица1[i][k] * матрица2[k][j] для строки в выводе: печать (строка)

Вывод:

 [66, 60, 64, 62]
[108, 86, 124, 90]
[85, 67, 103, 68]
 

Матрица Python, обратная

Когда необходимо решить уравнение, чтобы получить значение неизвестной переменной, которое удовлетворяет уравнениям, вычисляется обратная матрица, которая является просто обратной матрицей, как в обычной математике. Обратная матрица — это матрица, которая дает единичную матрицу при умножении на исходную матрицу. Только невырожденная матрица может иметь обратную. Несингулярная матрица имеет ненулевой определитель.

Код

# Программа на Python, показывающая, как вычислить обратную матрицу # Импорт необходимой библиотеки импортировать numpy как np # Создание матрицы A = np.matrix («3, 4, 6; 6, 2, 7; 6, 4, 6») # Вычисление обратного A печать (np.linalg.inv (A))

Вывод:

 [[-3.33333333e-01 -7.40148683e-17 3.33333333e-01]
 [ 1.25000000e-01 -3.75000000e-01 3.12500000e-01]
 [ 2.50000000e-01 2.50000000e-01 -3.75000000e-01]]
 

Транспонирование матрицы Python

Транспонирование матрицы Python без Numpy

Транспонирование матрицы включает перестановку строк и столбцов. Он имеет символ X’. Поместим объект в строку i и столбец j матрицы X в строку j и столбец i матрицы X’. Следовательно, X’ станет матрицей 4×3, если исходная матрица X является матрицей 3×4.

Код

# Программа Python для поиска транспонирования матрицы с использованием вложенных циклов # Создание матрицы матрица = [[4, 6, 7, 8], [3, 7, 2, 7], [7, 3, 7, 5]] результат = [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] # итерация по строкам для i в диапазоне (len (матрица)): # итерация по столбцам для j в диапазоне (len (матрица [0])): результат[j][i] = матрица[i][j] для строки в результате: печать (строка)

Вывод:

 [4, 3, 7]
[6, 7, 3]
[7, 2, 7]
[8, 7, 5]
 

Транспонирование матрицы Python с использованием Numpy

Мы можем использовать метод matrix.transpose() в Numpy, чтобы получить транспонирование матрицы.

Код

# Программа Python для нахождения транспонирования матрицы # импортируем нужный модуль импортировать numpy как np # Создание матрицы матричным методом матрица = np. matrix(‘[5, 7, 6; 4, 2, 4]’) #поиск транспонирования с использованием метода matrix.transpose транспонировать = матрица.транспонировать() печатать (транспонировать)

Вывод:

 [[5 4]
 [7 2]
 [6 4]]
 

Преобразование матрицы Python в массив

Мы можем использовать функции ravel и flatten для преобразования матрицы Python в массив Python.

Код

# Программа Python для преобразования матрицы в массив # импортируем нужный модуль импортировать numpy как np # Создание матрицы с помощью numpy матрица = np.matrix («[4, 6, 7; 5, 2, 6; 6, 3, 6]») # Использование функции ravel() для преобразования матрицы в массив массив = матрица.ravel() печать (массив) # Использование функции flatten() для преобразования матрицы в массив массив = np.asarray(матрица).flatten() печать (массив) # Использование функции reshape() для преобразования матрицы в массив массив = (np.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *