Задачи на reshape, axis и broadcasting в NumPy
Здесь собраны задачи на формы массивов NumPy: как меняется shape после преобразования, по какой оси считается результат и почему broadcasting принимает одни формы и отвергает другие.
Быстрая проверка совместимости
Сравнивайте размеры справа налево. Для каждой пары размер должен совпадать или быть равен 1; отсутствующая слева ось считается единичной. Формы (3, 1) и (1, 4) дают результат (3, 4). Это правило полезнее, чем заучивание отдельных примеров.
import numpy as np
column = np.array([10, 20, 30])[:, None]
row = np.array([1, 2, 3, 4])[None, :]
result = column + row
print(column.shape, row.shape, result.shape)
print(result[0].tolist())
Результат:
(3, 1) (1, 4) (3, 4)
[11, 12, 13, 14]
Не смешивайте преобразования
reshape меняет разбиение последовательности на оси; transpose переставляет оси; newaxis добавляет ось длины 1; squeeze удаляет единичные оси. При агрегации axis обозначает исчезающую ось. keepdims=True сохраняет её длиной 1 для последующих операций.
Что решить
- Получите вектор-строку и вектор-столбец.
- Нормализуйте строки и столбцы матрицы.
- Сравните concatenate со stack.
- Различите reshape и transpose.
Если пока сложно читать исходный массив, начните с индексации и срезов. Официальное правило broadcasting. Учебный маршрут — бесплатный курс NumPy и pandas.
- NumPy reshape и transpose: разница на примере и задача
Почему reshape и transpose дают разные значения при одинаковой форме? Разберите пример и проверьте понимание в задаче по NumPy.
NumPy и pandas: практический тренажёр - NumPy newaxis и squeeze: вектор-строка и вектор-столбец
Как получить формы (n, 1) и (1, n) через np.newaxis и убрать единичную ось через squeeze? Пример и задача на формы массивов.
NumPy и pandas: практический тренажёр - NumPy axis=0, 1, 2: пример агрегации и задача
Как axis влияет на sum и форму результата NumPy? Короткий пример и задача на агрегацию трёхмерного массива с проверкой кода.
NumPy и pandas: практический тренажёр - Min-max нормализация матрицы NumPy и argmin/argmax
Нормализуйте матрицу по минимуму и максимуму, затем найдите позиции глобальных экстремумов в NumPy.
NumPy и pandas: практический тренажёр - NumPy broadcasting: какая форма будет у суммы массивов
Сложение массивов NumPy с shape (5, 1) и (1, 4): определите форму результата и потренируйтесь применять правила broadcasting.
NumPy и pandas: практический тренажёр - Broadcasting NumPy по строкам и столбцам: формы и пример
Как делить матрицу на суммы строк и значения столбцов без циклов? Правила broadcasting, пример с keepdims и задача NumPy.
NumPy и pandas: практический тренажёр - NumPy broadcasting: outer-таблица и центрирование строк
Постройте outer-таблицу и центрируйте матрицу по строкам с помощью broadcasting. Задача на совместимость форм.
NumPy и pandas: практический тренажёр - NumPy concatenate и stack: чем отличаются shape и axis
concatenate объединяет по существующей оси, stack добавляет новую. Сравните формы результатов NumPy и решите задачу в браузере.
NumPy и pandas: практический тренажёр - NumPy stack: axis=0, 1 и 2 и форма результата
Соедините массивы через np.stack по разным осям и предскажите shape результата. Практика NumPy онлайн.
NumPy и pandas: практический тренажёр
