0Pricing
Learn AI with Python · Урок

Индексация, срезы и расширенная индексация

Базовые срезы, логические маски, расширенная индексация и np.where() для условного выбора.

«Индексация, срезы и расширенная индексация» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Основы индексации

Массивы NumPy используют индексацию с нуля, как списки Пайтона. Отрицательные индексы отсчитываются с конца.

import numpy as np
a = np.array([10, 20, 30, 40, 50])
print(a[0])    # 10
print(a[-1])   # 50

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

Срезы используют start:stop:step и возвращают представление (не копию), поэтому изменение среза изменяет исходный массив.

print(a[1:4])    # [20 30 40]
print(a[::2])    # [10 30 50]
view = a[1:3]
view[0] = 99
print(a)         # [10 99 30 40 50]

Индексация двумерных массивов [строка, столбец]

Для двумерных массивов указывайте обе координаты в одних квадратных скобках: m[row, col]. Это понятнее и быстрее, чем m[row][col].

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

Срезы строк и столбцов

Используйте двоеточие, чтобы выбрать всю ось. m[:, 1] выбирает столбец 1 во всех строках.

print(m[0, :])    # first row:    [1 2 3]
print(m[:, 1])    # second col:   [2 5 8]
print(m[1:, :2])  # bottom-left block

Логические маски

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

a = np.array([5, 12, 7, 20, 3])
mask = a > 8
print(mask)     # [False  True False  True False]
print(a[mask])  # [12 20]

Объединение условий

Используйте поэлементные & (логическое «и») и | (логическое «или») в скобках. Ключевые слова and/or NOT применимы к массивам.

print(a[(a > 4) & (a < 15)])   # [ 5 12  7]

Присваивание через маску

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

a = np.array([5, 12, 7, 20, 3])
a[a > 10] = 10
print(a)   # [ 5 10  7 10  3]

Расширенная индексация массивами

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

a = np.array([10, 20, 30, 40, 50])
idx = [4, 0, 2, 2]
print(a[idx])   # [50 10 30 30]

Расширенная индексация в двумерных массивах

Укажите два массива индексов, чтобы выбрать конкретные пары (строка, столбец). Здесь мы выбираем диагональные элементы по углам.

m = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
rows = [0, 2]
cols = [0, 2]
print(m[rows, cols])   # [1 9]

Условный выбор с помощью np.where

np.where(cond, x, y) возвращает элементы из x, где условие истинно, а в остальных случаях — из y; это векторизованный условный выбор.

a = np.array([-2, 5, -7, 3])
print(np.where(a < 0, 0, a))   # [0 5 0 3]  (clip negatives)

Поиск индексов с помощью np.where

При вызове с одним аргументом np.where(cond) возвращает индексы, для которых выполняется условие.

a = np.array([10, 20, 30, 40])
print(np.where(a > 15))   # (array([1, 2, 3]),)

Проверка знаний

Проверьте свои навыки индексации.

Повторение

Приёмы выбора:

  • Базовая индексация и срезы (срезы являются представлениями)
  • Доступ к двумерным массивам через m[row, col], выбор всей оси с помощью :
  • Логические маски с & и |
  • Расширенная индексация массивами индексов (возвращает копию)
  • np.where(cond, x, y) для векторизованного условного выбора

Часто задаваемые вопросы

Урок «Индексация, срезы и расширенная индексация» бесплатный?

Да — полный текст урока «Индексация, срезы и расширенная индексация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Индексация, срезы и расширенная индексация»?

Базовые срезы, логические маски, расширенная индексация и np.where() для условного выбора. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Индексация, срезы и расширенная индексация»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Создание массивов и их свойства
  2. Индексация, срезы и расширенная индексация
  3. Распространение и векторизованные операции
  4. Линейная алгебра с NumPy
← Назад к Learn AI with Python