Срез и индексация в NumPy

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

Выделение срезов из массивов

Выделение среза - это процесс извлечения подмножества массива путем указания диапазона индексов. Срезы из массивов NumPy можно выделить с помощью оператора двоеточия :.

Откройте Python-интерпретатор

Откройте Python-интерпретатор, введя следующую команду в терминале.

python3

Импортируйте NumPy

NumPy уже установлен, вы можете импортировать его в свой код Python:

import numpy as np

Выделение срезов из одномерных массивов

## создайте одномерный массив
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

## извлеките срез массива от индекса 2 до индекса 5
print(a[2:5])

Результат:

[2 3 4]

Выделение срезов из многомерных массивов

Вы также можете выделить срезы из многомерных массивов.

## создайте двумерный массив
b = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])

## извлеките первые две строки и первые два столбца
print(b[:2, :2])

Результат:

[[0 1]
 [3 4]]

Индексация с помощью булевых массивов

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

Создайте одномерный массив

c = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

Создайте булевый массив на основе условия (c > 5)

mask = c > 5
print(mask)

Результат:

[False False False False False False  True  True  True  True]

Отфильтруйте исходный массив с использованием булевого массива

print(c[mask])

Результат:

[6 7 8 9]

Фэнси-индексация

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

## создайте одномерный массив
d = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

## создайте массив индексов
indices = np.array([1, 3, 5])

## используйте фэнси-индексацию для извлечения элементов по указанным индексам
print(d[indices])

Результат:

[1 3 5]
  • Вы также можете использовать фэнси-индексацию для присвоения значений конкретным элементам в массиве.
## создайте одномерный массив
e = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

## создайте массив индексов
indices = np.array([1, 3, 5])

## присвойте значение 10 элементам по указанным индексам
e[indices] = 10
print(e)

Результат:

[ 0 10  2 10  4 10  6  7  8  9]

Резюме

Поздравляем! Вы завершили практическое занятие по срезу и индексации в NumPy.

В этом практическом занятии вы ознакомились с основами среза и индексации массивов NumPy:

  • Срез позволяет извлекать подмножество массива, указав диапазон индексов.
  • Булевая индексация позволяет фильтровать массив на основе условия.
  • Фэнси-индексация позволяет извлекать конкретные элементы или подмножества массива, используя массив индексов.