Главная страница » Двумерный массив python

Двумерный массив python

Для научных вычислений, обработки данных и машинного обучения, где требуются эффективные операции над большими многомерными массивами, стандарт де-факто — это библиотека NumPy. Она предоставляет высокопроизводительный объект ndarray (N-dimensional array).

Python

Import numpy as np
 
# Создание двумерного массива NumPy
Np_matrix = np. array([
 [1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]
])
 
Print("Двумерный массив NumPy:")
Print(np_matrix)
 
# Доступ к элементам (строка, столбец) - как в списках, так и с использованием срезов NumPy
Print("\nДоступ к элементам NumPy:")
Print(f"Элемент в первой строке, втором столбце (индекс [0][1]): {np_matrix[0, 1]}") # Используем запятую для многомерных индексов
Print(f"Элемент во второй строке, третьем столбце (индекс [1][2]): {np_matrix[1, 2]}")
 
# Изменение элемента
Np_matrix[0, 0] = 100
Print(f"Измененный элемент [0,0]: {np_matrix[0,0]}")
Print(np_matrix)
 
# Матричные операции (одно из главных преимуществ NumPy)
Print("\nМатричные операции с NumPy:")
Matrix_b = np. array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
Print(f"Сложение матриц:\n{np_matrix + matrix_b}")
Print(f"Поэлементное умножение:\n{np_matrix * matrix_b}")
Print(f"Матричное умножение (@ или. dot()):\n{np_matrix @ matrix_b}")
 
# Создание массивов разных форм
Print("\nСоздание массивов NumPy различными способами:")
Zeros_matrix = np. zeros((2, 3)) # Матрица 2x3 из нулей
Print(f"Матрица из нулей:\n{zeros_matrix}")
 
Ones_matrix = np. ones((3, 2)) # Матрица 3x2 из единиц
Print(f"Матрица из единиц:\n{ones_matrix}")
 
Identity_matrix = np. eye(3) # Единичная матрица 3x3
Print(f"Единичная матрица:\n{identity_matrix}")
 
Random_matrix = np. random. rand(2, 2) # Матрица 2x2 из случайных чисел (0 до 1)
Print(f"Матрица из случайных чисел:\n{random_matrix}")
 
# Получение формы (размеров) массива
Print(f"\nФорма (размеры) np_matrix: {np_matrix. shape}")
Print(f"Количество измерений: {np_matrix. ndim}")
Print(f"Тип данных элементов: {np_matrix. dtype}")

Плюсы NumPy:

    Производительность: Очень быстро работает с числовыми данными благодаря низкоуровневой реализации на C. Богатый функционал: Предоставляет огромное количество математических функций и операций над массивами (линейная алгебра, статистика, БПФ и т. д.). Экономия памяти: Хранит данные в непрерывных блоках памяти, что более эффективно. Используется повсеместно: Является основой для многих других научных библиотек Python (Pandas, SciPy, Matplotlib, scikit-learn).

Минусы NumPy:

    Необходимо установить: Не входит в стандартную библиотеку Python. Ограничения по типам данных: Все элементы ndarray должны быть одного типа (хотя NumPy умеет автоматически преобразовывать типы).

Выбор между списками списков и NumPy:

    Используйте Списки списков, если вам нужна простая структура для хранения небольшого количества данных, и вы не планируете выполнять сложные численные операции. Это хорошо подходит для общих задач, где каждый "элемент" строки может быть сложным объектом разных типов. Используйте NumPy (ndarray), если вы работаете с числовыми данными, особенно в больших объемах, и вам нужна производительность, математические операции (матричные умножения, транспонирование, инвертирование и т. д.) или вы собираетесь использовать другие научные библиотеки Python.

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

Это самый простой и интуитивно понятный способ создания двумерного массива в чистом Python.

Python

# Создание двумерного массива (матрицы 3x3)
Matrix = [
 [1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]
]
 
Print("Двумерный массив (список списков):")
Print(matrix)
 
# Доступ к элементам (строка, столбец)
Print("\nДоступ к элементам:")
Print(f"Элемент в первой строке, втором столбце (индекс [0][1]): {matrix[0][1]}") # Выведет 2
Print(f"Элемент во второй строке, третьем столбце (индекс [1][2]): {matrix[1][2]}") # Выведет 6
 
# Изменение элемента
Matrix[0][0] = 10
Print(f"Измененный элемент [0][0]: {matrix[0][0]}")
Print(matrix)
 
# Итерация по элементам
Print("\nИтерация по элементам:")
For row in matrix:
 for element in row:
 print(element, end=" ")
 print() # Переход на новую строку после каждой строки
 
# Добавление новой строки
Matrix. append([10, 11, 12])
Print("\nМассив после добавления строки:")
Print(matrix)
 
# Количество строк и столбцов (если все строки одинаковой длины)
Num_rows = len(matrix)
Num_cols = len(matrix[0]) # Предполагаем, что первая строка не пуста
Print(f"\nКоличество строк: {num_rows}")
Print(f"Количество столбцов: {num_cols}")

Плюсы списков списков:

    Простота и гибкость: Легко создавать, понимать и манипулировать. Разные типы данных: Элементы могут быть любого типа и даже иметь разную длину строк (хотя для матриц это обычно нежелательно).

Минусы списков списков:

    Производительность: Неэффективны для больших численных расчетов, так как Python-списки — это, по сути, массивы указателей на объекты, а не непрерывные блоки памяти. Отсутствие встроенных математических операций: Нет прямой поддержки матричных операций (сложение, умножение и т. д.).

В Python, в отличие от некоторых других языков программирования (например, C++ или Java), нет встроенного типа данных "двумерный массив" в строгом смысле. Вместо этого, Двумерные массивы обычно реализуются как списки списков (список, каждый элемент которого сам является списком).

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

Оставьте комментарий

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

Прокрутить вверх