Библиотека numpy. Работа с массивами. Слайсы

В статье рассмотрены различные способы получения элементов из массивов типа numpy.ndarray библиотеки numpy.

Если вы читаете эту статью, то, наверное, знаете, зачем нужна библиотека numpy. Если в “двух словах”, то numpy – это библиотека для языка программирования Python, которая предоставляет в распоряжение разработчика инструменты для эффективной работы с многомерными массивами и высокопроизводительные вычислительные алгоритмы.

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

Для начала импортируем библиотеку numpy.

>>> import numpy as np

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

>>> m = np.matrix('1 2 3 4; 5 6 7 8; 9 1 5 7')
>>> print(m)
[[1 2 3 4]
 [5 6 7 8]
 [9 1 5 7]]

Получим вот такую таблицу чисел.

numpy ndarray

Не забывайте, что нумерация строк и столбцов в библиотеки numpy (и в самом Python) начинается с нуля.

Элемент матрицы с заданными координатами

Извлечем элемент из нашей матрицы с координатами (1, 0), 1 – это номер строки, 0 – номер столбца.

Здесь и далее, элементы, с которыми мы работаем в матрице будут окрашены в оранжевый цвет на соответствующей картинке.

numpy ndarray pic2

>>> m[1, 0]
5

В приведенной записи, в квадратных скобках указывается номер строки – первой цифрой и номер столбца – второй.

Строка матрицы

Получим вторую строчку матрицы.

numpy ndarray pic3

>>> m[1, :]
matrix([[5, 6, 7, 8]])

Двоеточие означает “все элементы”, в приведенном примере, первый элемент – это номер строки, второй – указание на то, что необходимо взять элементы всех столбцов матрицы.

Столбец матрицы

Извлечем третий столбец матрицы.

numpy ndarray pic 4

>>> m[:, 2]
matrix([[3],
        [7],
        [5]])

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

Часть строки матрицы

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

numpy ndarray pic5

>>> m[1, 2:]
matrix([[7, 8]])

Запись “2:” означает, что начиная с третьего столбца включительно (т.к. нумерация начинается с 0, то третий элемент имеет индекс 2) взять все оставшиеся в ряду элементы .

Часть столбца матрицы

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

numpy ndarray pic7

>>> m[0:2, 1]
matrix([[2],
        [6]])

В приведенной записи “0:2” означает: взять все элементы столбца начиная с индекса 0, заканчивая индексом 2, но последний элемент в результат не включать.

Непрерывная часть матрицы

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

numpy ndarray pic8

>>> m[0:2, 1:3]
matrix([[2, 3],
        [6, 7]])

Произвольные столбцы / строки матрицы

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

numpy ndarray pic8

>>> cols = [0, 1, 3]
>>> m[:, cols]
matrix([[1, 2, 4],
        [5, 6, 8],
        [9, 1, 7]])

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Книга: Pandas. Работа с данными
<<< Библиотека Numpy. Расчет статистик по данным в массиве

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

Ваш адрес email не будет опубликован.