В статье рассмотрены различные способы получения элементов из массивов типа 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 (и в самом Python) начинается с нуля.
Элемент матрицы с заданными координатами
Извлечем элемент из нашей матрицы с координатами (1, 0), 1 – это номер строки, 0 – номер столбца.
Здесь и далее, элементы, с которыми мы работаем в матрице будут окрашены в оранжевый цвет на соответствующей картинке.
>>> m[1, 0] 5
В приведенной записи, в квадратных скобках указывается номер строки – первой цифрой и номер столбца – второй.
Строка матрицы
Получим вторую строчку матрицы.
>>> m[1, :] matrix([[5, 6, 7, 8]])
Двоеточие означает “все элементы”, в приведенном примере, первый элемент – это номер строки, второй – указание на то, что необходимо взять элементы всех столбцов матрицы.
Столбец матрицы
Извлечем третий столбец матрицы.
>>> m[:, 2] matrix([[3], [7], [5]])
Здесь, также как в предыдущем примере, используется двоеточие. Первый элемент в квадратных скобках означает, что мы возьмем по элементу из каждой строки, которые находится в столбце, указанном во втором элементе.
Часть строки матрицы
Иногда возникает задача взять не все элементы строки, а только часть: рассмотрим пример, когда нам из второй строки нужно извлечь все элементы, начиная с третьего.
>>> m[1, 2:] matrix([[7, 8]])
Запись “2:” означает, что начиная с третьего столбца включительно (т.к. нумерация начинается с 0, то третий элемент имеет индекс 2) взять все оставшиеся в ряду элементы .
Часть столбца матрицы
Аналогично предыдущему примеру, можно извлечь только часть столбца матрицы.
>>> m[0:2, 1] matrix([[2], [6]])
В приведенной записи “0:2” означает: взять все элементы столбца начиная с индекса 0, заканчивая индексом 2, но последний элемент в результат не включать.
Непрерывная часть матрицы
Извлечем из заданной матрицы матрицу, располагающуюся так как показано на рисунке ниже.
>>> m[0:2, 1:3] matrix([[2, 3], [6, 7]])
Произвольные столбцы / строки матрицы
Numpy позволяет извлекать произвольный набор столбцов или строк матрицы, строки (столбцы) которые нужно извлечь передаются в виде списка.
>>> cols = [0, 1, 3] >>> m[:, cols] matrix([[1, 2, 4], [5, 6, 8], [9, 1, 7]])
P.S.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
<<< Библиотека Numpy. Расчет статистик по данным в массиве