Массивы в Python
Contents
Массивы в Python
В Python нет встроенного типа «массив», но вместо него можно использовать встроенный тип «список» (list). Также при использовании библиотеки NumPy можно создавать объект типа «массив» (Ndarray). Далее о каждом из этих двух вариантов подробнее.
Списки (list)
Список представляет собой тип, который может хранить любое количество элементов разных типов. Создать список в Python можно несколькими способами:
Создание
- Создание пустого списка:
names = []
names = list()
- Создание списка с элементами:
names = ['Иван', 'Женя', 'Ольга']
- Создание списка на основе другого списка:
names = ['Иван', 'Женя', 'Ольга'] new_names = list(names)
- Создание списка повторением какого-либо элемента или другого списка:
names = ['Иван', 'Женя', 'Ольга'] new_names = names * 2
- Создание списка с помощью конструкции range():
numbers = list(range(10))
Функция range(10) возвращает числа от 0 до 9, на основе которых создаётся новый список.
Обращение к элементу
Обращение к элементу списка производится по индексу элемента:
names[0]
Индексы элементов начинаются с нулевого, то есть первый элемент списка имеет индекс «0», а второй — «1».
Обход элементов
Элементы списка можно обходить циклами for и while:
for name in names: print(name)
Сравнение
Списки можно сравнивать между собой. Для того, чтобы два списка считались равными, они должны иметь одинаковый состав. К примеру, следующие два списка будут равны, не смотря на разные способы их создания:
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list2 = list(range(10))
Размерность
Список в Python может быть как одномерным, так и многомерным. Выше были приведены примеры одномерных списков. Чтобы список был многомерным, например, двухмерным, каждый элемент списка должен представлять собой другой список:
names = [['Иван', 19], ['Женя', 20], ['Ольга', 21]]
В данном примере список состоит из трёх списков, каждый из которых содержит имя и возраст. Аналогично можно создавать списки с большим количеством измерений — с большим количеством уровней вложенности.
Для получения элемента многомерного списка, нужно указывать столько индексов, сколько измерений необходимо использовать для описания элемента:
names = [['Иван', 19], ['Женя', 20], ['Ольга', 21]] names[1][0]
Преобразование
Двумерный список можно преобразовать в словарь с парами «ключ-значение»:
names = [['Иван', 19], ['Женя', 20], ['Ольга', 21]] new_dict = dict(names)
Матрицы
Двумерный список является матрицей, которую визуально можно представить в следующем виде:
В данном примере переменная А содержит двумерный список, т.е. список списков, каждый из которых состоит из трёх элементов. Тип list в Python не поддерживает работу со списками как с матрицами, но, тем не менее, позволяет матрицы хранить.
Массивы NumPy (Ndarray)
Создание
Для использования класса Ndarray предварительно необходимо импортировать библиотеку numpy:
import numpy as np
Для создания массива используется функция модуля numpy — array():
import numpy as np new_array = np.array(['Иван', 'Женя', 'Ольга'])
В первый параметр функции array() передаётся список, поэтому способов создания столько же, сколько способов создания списков. При передаче в параметр многомерного списка будет создан многомерный массив:
import numpy as np new_array = np.array([['Иван', 19], ['Женя', 20], ['Ольга', 21]])
Тип значения элементов
В данном примере элементы массива были приведены к строковому типу, так как каждый список главного списка содержал строковое значение. Тип значения элементов массива можно переопределять при создании массива, указывая его вторым параметром функции array():
import numpy as np new_array = np.array([['Иван', 19], ['Женя', 20], ['Ольга', 21]], dtype=np.str)
Обращение к элементам
Обращение к элементам массива Ndarray производится аналогично получение элемента в многомерном списке.
Атрибуты класса Ndarray
Далее рассмотрим атрибуты класса Ndarray:
- ndim — число измерений (осей) массива;
- shape — размерность массива. Это tuple, содержащий натуральные числа (n, m) — длины массива по каждой оси (n — высота, m — ширина). Число элементов кортежа shape равно ndim.
- size — количество элементов в массиве, равно произведению всех элементов атрибута shape;
- dtype — тип элементов массива. NumPy предоставляет возможность использовать как встроенные типы, например: bool_, character, int8, int16, int32, int64, float8, float16, float32, float64, complex64, object_, так и собственные типы данных, в том числе и составные;
- itemsize — размер каждого элемента массива в байтах;
- data — буфер, содержащий фактические элементы массива. Обычно не нужно использовать этот атрибут, так как обращаться к элементам массива проще всего с помощью индексов.
Изменение размерности
Размерность массива darray в Python можно изменять методом reshape():
import numpy as np new_array = np.array([['Иван', 19], ['Женя', 20], ['Ольга', 21]], dtype=np.str) new_array.reshape(2, 3)
При этом количество элементов должно позволять это сделать, т.е. произведение элементов атрибута shape до и после изменения размера должно быть одинаковым. К примеру, нельзя изменить размерность массива с (3, 4) на (2, 5), но можно изменить её на (2, 6).
Comments
So empty here ... leave a comment!