Двумерные массивы, или матрицы, являются фундаментальными структурами данных в программировании, особенно важными для таких задач, как обработка изображений, линейная алгебра и разработка игр. Хотя в Python нет встроенного типа двумерного массива, как в некоторых других языках (например, C++), он предлагает несколько эффективных и элегантных способов их создания и обработки. В этой статье рассматриваются три популярных подхода: списковые включения, вложенные циклы и мощная библиотека NumPy.
Оглавление
Метод списковых включений
Списковые включения предлагают краткий и питоничный способ создания двумерных массивов, особенно полезный при инициализации значениями, генерируемыми по формулам или шаблонам. Он использует вложенные списковые включения, при этом внешний цикл обрабатывает строки, а внутренний — столбцы.
# 3x4 массив, заполненный нулями
rows = 3
cols = 4
array_2d = [[0 for _ in range(cols)] for _ in range(rows)]
print(array_2d) # Вывод: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
# 3x3 массив со значениями, основанными на индексах строки и столбца
array_2d = [[i + j for j in range(3)] for i in range(3)]
print(array_2d) # Вывод: [[0, 1, 2], [1, 2, 3], [2, 3, 4]]
# 2x2 массив со случайными числами (требуется импорт random)
import random
array_2d = [[random.randint(1,10) for _ in range(2)] for _ in range(2)]
print(array_2d) # Вывод: (Пример) [[7, 2], [9, 5]]
Метод вложенных циклов
Этот подход использует вложенные циклы for
с range
, итерируя строки и столбцы для построения массива поэлементно. Он более многословен, чем списковые включения, но может быть проще для понимания новичками.
rows = 3
cols = 4
array_2d = []
for i in range(rows):
row = []
for j in range(cols):
row.append(0) # Или любое другое начальное значение
array_2d.append(row)
print(array_2d) # Вывод: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
rows = 3
cols = 3
array_2d = []
for i in range(rows):
row = []
for j in range(cols):
row.append(i*cols + j) #Пример заполнения последовательными числами
array_2d.append(row)
print(array_2d) # Вывод: [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
Массивы NumPy
NumPy — мощная библиотека для численного вычисления в Python. Её функция numpy.array()
обеспечивает эффективное создание и обработку многомерных массивов. Массивы NumPy предлагают значительно более высокую производительность, чем списки Python, для числовых операций.
import numpy as np
# 3x4 массив, заполненный нулями
array_2d = np.zeros((3, 4))
print(array_2d)
# 3x3 массив, заполненный единицами
array_2d = np.ones((3, 3))
print(array_2d)
# 2x2 массив, заполненный определённым значением
array_2d = np.full((2, 2), 7)
print(array_2d)
# 3x3 единичная матрица
array_2d = np.eye(3)
print(array_2d)
# 2x3 массив со случайными числами от 0 до 1
array_2d = np.random.rand(2, 3)
print(array_2d)
# 2x2 массив со случайными целыми числами от 1 до 10
array_2d = np.random.randint(1, 11, size=(2,2))
print(array_2d)
NumPy предлагает различные функции для инициализации массивов с различными значениями и шаблонами, что делает его предпочтительным выбором для численных вычислений с двумерными массивами. Не забудьте импортировать библиотеку: import numpy as np
перед использованием этих функций.