Нашли ошибку?
Скачать чистый
урок 1 из 5≈ 15 минупражнения: 0 из 4

Оси: axis=0 и axis=1

Итоги по столбцам и по строкам таблицы одним вызовом — параметр axis. Как не перепутать, какая ось какая.

Python запустится при первом выполнении

sum, mean, max до сих пор сворачивали всю таблицу в одно число. Но у таблицы обычно спрашивают другое: сколько продал каждый магазин, какой была выручка каждого квартала. Для этого у агрегатов есть параметр axis — ось, вдоль которой считать.

Вернёмся к продажам трёх магазинов по кварталам из модуля 2:

[ ]Магазины × кварталы
import numpy as np

sales = np.array([
    [120, 135, 150, 170],   # магазин 1: кварталы 1–4
    [ 90, 100,  95, 130],   # магазин 2
    [200, 180, 210, 250],   # магазин 3
])
print(sales.shape)
print(sales.sum())
Выводсохранённый · нажмите «Выполнить», чтобы получить свой
(3, 4)
1830

Две оси таблицы

У двумерного массива две оси: ось 0 идёт вниз — по номерам строк; ось 1 идёт вправо — по номерам столбцов, то есть вдоль строки. Номера осей совпадают с позициями в форме (3, 4): ось 0 длиной 3, ось 1 длиной 4.

axis — это ось, которую сворачивают: вдоль неё идёт сложение, и она исчезает из результата.

[ ]sum(axis=0) и sum(axis=1)
print(sales.sum(axis=0))   # по каждому кварталу (столбцу)
print(sales.sum(axis=1))   # по каждому магазину (строке)
Выводсохранённый · нажмите «Выполнить», чтобы получить свой
[410 415 455 550]
[575 415 840]
  • sales.sum(axis=0) — складываем вниз, строки исчезают: сумма для каждого столбца — квартала. Форма (3, 4) → (4,).
  • sales.sum(axis=1) — складываем вправо, столбцы исчезают: сумма для каждой строки — магазина. Форма (3, 4) → (3,).
[ ]Упражнение 1Продажи каждого магазина решено

Сохраните в store_totals продажи каждого магазина за год — три числа, по одному на строку таблицы sales.

store_totals = ...

[ ]Упражнение 2Средний квартал решено

Сохраните в quarter_avg среднюю выручку магазина в каждом квартале — четыре числа, по одному на столбец.

quarter_avg = ...

Вопрос

У массива m форма (3, 4). Какая форма у m.sum(axis=0)?

Погода по неделям

В модуле 3 мы разложили год по неделям: таблица 52 × 7, строка — неделя, столбец — день недели. Теперь можно спросить у неё то, что раньше было недоступно:

[ ]Средняя температура каждой недели
tmax = np.loadtxt("data/moscow_2025.csv", delimiter=",", skiprows=1, usecols=2)
weeks = tmax[:364].reshape(52, 7)
week_mean = weeks.mean(axis=1)
print(week_mean.shape)
print("самая холодная неделя:", week_mean.argmin() + 1, "—", round(week_mean.min(), 1), "°C")
Выводсохранённый · нажмите «Выполнить», чтобы получить свой
(52,)
самая холодная неделя: 7 — -6.5 °C

weeks.mean(axis=1) — среднее каждой строки, то есть каждой недели; argmin показывает самую холодную неделю.

[ ]Упражнение 3Самый жаркий день каждой недели решено

Сохраните в week_max самую высокую температуру каждой недели (52 числа), а в hottest_week — номер недели, где был самый жаркий день года (первая неделя — номер 1).

week_max = ...
hottest_week = ...

[ ]Упражнение 4Средний день недели решено

Сохраните в by_weekday среднюю максимальную температуру каждого дня недели за год — 7 чисел. Первое — среды (год начался в среду).

by_weekday = ...

Итоги

  • axis — ось, которую сворачивают; она исчезает из формы результата.
  • В таблице: axis=0 — итог для каждого столбца, axis=1 — для каждой строки.
  • Параметр axis есть у sum, mean, min, max, argmax и других агрегатов.

Подробнее в справочнике

Нашли ошибку?