
Работа с матрицами – одна из ключевых задач в программировании, особенно в научных вычислениях, анализе данных и машинном обучении. В Python создание матрицы не требует сложных конструкций, но важно понимать несколько базовых методов и принципов, чтобы эффективно работать с многомерными структурами данных. В этой статье мы рассмотрим процесс создания матрицы в Python, начиная от самых простых способов до более продвинутых вариантов.
Первый и самый простой способ – это создание матрицы с использованием вложенных списков. Списки в Python могут хранить любые данные, в том числе другие списки, что позволяет создавать двумерные структуры. Например, для создания 2×2 матрицы достаточно записать:
matrix = [[1, 2], [3, 4]]
Этот способ подходит для небольших проектов, но с увеличением размера данных он может стать менее удобным. В случае работы с большими массивами данных рекомендуется использовать библиотеки, такие как NumPy, которые оптимизированы для работы с многомерными массивами и предлагают более мощные и гибкие средства для манипуляции с матрицами.
С помощью NumPy создание матрицы сводится к одной строке кода:
import numpy as np
matrix = np.array([[1, 2], [3, 4]])
Этот метод значительно ускоряет вычисления и делает код более читаемым. NumPy поддерживает широкий спектр операций с матрицами, включая транспонирование, умножение, нахождение определителя и инвертирование, что делает его незаменимым инструментом для научных и инженерных расчетов.
В дальнейшем мы рассмотрим, как создавать матрицы других типов, например, заполненные нулями или случайными числами, и как эффективно работать с большими данными в Python, используя оптимизированные структуры данных.
Как создать матрицу с помощью библиотеки NumPy
Импортируйте библиотеку: import numpy as np. Без этого использовать функции NumPy невозможно.
Чтобы создать матрицу 3×3 с произвольными значениями, используйте np.array: np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]). Вложенные списки определяют строки.
Для матрицы, заполненной нулями, вызовите np.zeros((3, 3)). Аргумент – кортеж с размерами.
Чтобы получить матрицу из единиц: np.ones((2, 4)). Размеры могут быть любыми.
Матрицу со случайными значениями в диапазоне от 0 до 1 создаёт np.random.rand(3, 3). Для целых чисел в заданном диапазоне – np.random.randint(0, 10, (3, 3)).
Если нужна единичная матрица, используйте np.eye(n), где n – размер по диагонали: np.eye(4) создаёт 4×4.
Для создания матрицы со значениями по порядку: np.arange(1, 10).reshape(3, 3). reshape задаёт форму после генерации последовательности.
Убедитесь, что общее число элементов соответствует произведению размеров. Иначе reshape вызовет ошибку.
NumPy интерпретирует матрицы как двумерные массивы. Проверьте размерность через matrix.shape, тип данных – matrix.dtype.
Как преобразовать список в матрицу в Python
Для преобразования одномерного списка в матрицу используется метод разбиения на подсписки заданной длины. Основной инструмент – list comprehension.
Пример: имеется список lst = [1, 2, 3, 4, 5, 6]. Чтобы получить матрицу 2×3, определите число столбцов, например cols = 3, затем выполните разбиение:
matrix = [lst[i:i + cols] for i in range(0, len(lst), cols)]
Результат: [[1, 2, 3], [4, 5, 6]].
Если количество элементов не делится нацело, недостающие значения можно дополнить, например нулями:
while len(lst) % cols != 0:
lst.append(0)
matrix = [lst[i:i + cols] for i in range(0, len(lst), cols)]
Для многомерных преобразований используйте библиотеку NumPy. Она позволяет создать матрицу с нужной формой за одну операцию:
import numpy as np
arr = np.array(lst).reshape(2, 3)
Перед использованием reshape убедитесь, что общее число элементов соответствует произведению размерностей, иначе возникнет ошибка.
Как задать размерность матрицы при её создании

В Python размерность матрицы определяется количеством строк и столбцов. Для явного задания используют вложенные списки или функции из библиотеки numpy.
- Чтобы создать матрицу 3×4 с нулями вручную:
matrix = [[0 for _ in range(4)] for _ in range(3)] - При помощи
numpy:import numpy as np matrix = np.zeros((3, 4))
Если нужно заполнить матрицу другим значением:
matrix = [[7 for _ in range(5)] for _ in range(2)]– создаёт 2×5 матрицу из семёрок.np.full((2, 5), 7)– аналогично с использованиемnumpy.
Размерность всегда задаётся в формате (строки, столбцы). Для получения текущей размерности:
- В
listможно использоватьlen(matrix)иlen(matrix[0]). - В
numpy:matrix.shapeвернёт кортеж (строки, столбцы).
Изменение размерности возможно с помощью numpy.reshape:
reshaped = np.reshape(matrix, (6, 2))
Это допустимо, если общее число элементов остаётся неизменным: например, 3×4 можно преобразовать в 6×2.
Как работать с элементами матрицы в Python

Для доступа к элементам матрицы, представленной в виде вложенного списка, используется двойная индексация. Первый индекс указывает строку, второй – столбец. Например, matrix[1][2] возвращает элемент во второй строке и третьем столбце.
Изменить элемент можно напрямую: matrix[0][0] = 10. Это перезапишет значение в первой строке и первом столбце.
Чтобы пройтись по всем элементам матрицы, применяй вложенные циклы:
for row in matrix:
for item in row:
print(item)
Если требуется изменить каждый элемент, используй индексы:
for i in range(len(matrix)):
for j in range(len(matrix[i])):
matrix[i][j] += 1
Для поиска конкретного значения удобно использовать условие внутри цикла:
for i in range(len(matrix)):
for j in range(len(matrix[i])):
if matrix[i][j] == target:
print(f"Найдено на позиции ({i}, {j})")
Чтобы извлечь весь столбец, применяй генератор списков: [row[j] for row in matrix].
Избегай выхода за границы: перед обращением к элементу проверяй, что индексы допустимы. Например: if i < len(matrix) and j < len(matrix[i]).
При работе с большими матрицами лучше использовать NumPy, где операции над элементами реализованы эффективнее и компактнее.
Как выполнить операции с матрицами в Python

Для выполнения операций с матрицами в Python рекомендуется использовать библиотеку NumPy, обеспечивающую высокую производительность и лаконичный синтаксис.
Создание матрицы:
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
Сложение и вычитание выполняются напрямую:
C = A + B – поэлементное сложение
D = A — B – поэлементное вычитание
Умножение матриц различается по типу:
A * B – поэлементное умножение
np.dot(A, B) – матричное произведение
A @ B – эквивалентно np.dot()
Транспонирование:
A.T – транспонирует матрицу
Определитель:
np.linalg.det(A) – возвращает значение определителя
Обратная матрица:
np.linalg.inv(A) – вычисляет обратную, если она существует
Ранг:
np.linalg.matrix_rank(A) – определяет ранг
Система линейных уравнений AX = B решается так:
X = np.linalg.solve(A, B)
Чтобы избежать ошибок при операциях, проверяйте размерности: для матричного произведения число столбцов первой матрицы должно совпадать с числом строк второй. Используйте A.shape для контроля.
Как вывести матрицу в читаемом виде в Python
matrix = [
[1, 23, 456],
[7890, 12, 3],
[45, 6, 789]
]
for row in matrix:
print(" ".join(f"{x:>5}" for x in row))
Ширина столбца подбирается исходя из максимально длинного элемента. Чтобы определить её автоматически:
max_width = max(len(str(x)) for row in matrix for x in row)
for row in matrix:
print(" ".join(f"{x:>{max_width}}" for x in row))
Если требуется визуально выделить границы:
def print_matrix_with_borders(mat):
max_len = max(len(str(el)) for row in mat for el in row)
border = "+" + "+".join(["-" * (max_len + 2)] * len(mat[0])) + "+"
print(border)
for row in mat:
print("| " + " | ".join(f"{el:>{max_len}}" for el in row) + " |")
print(border)
print_matrix_with_borders(matrix)
matrix = [
[1.2, 3.1415, 2.71],
[0.001, 100.0, 42.42]
]
for row in matrix:
print(" ".join(f"{x:8.3f}" for x in row))
from pprint import pprint
pprint(matrix)
Но для точного контроля над форматированием предпочтительнее собственная функция форматирования.
