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 — это ось, которую сворачивают: вдоль неё идёт сложение, и она исчезает из результата.
a.sum(axis=0) — вниз по строкамa.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,).
Сохраните в store_totals продажи каждого магазина за год — три числа, по одному на строку таблицы sales.
sales.sum(axis=1).Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
store_totals = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
store_totals = sales.sum(axis=1)Сохраните в quarter_avg среднюю выручку магазина в каждом квартале — четыре числа, по одному на столбец.
axis=0.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
quarter_avg = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
quarter_avg = sales.mean(axis=0)У массива m форма (3, 4). Какая форма у m.sum(axis=0)?
axis=0 сворачивает её, остаётся ось длиной 4.Погода по неделям
В модуле 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 показывает самую холодную
неделю.
Сохраните в week_max самую высокую температуру каждой недели (52 числа), а в hottest_week — номер недели,
где был самый жаркий день года (первая неделя — номер 1).
weeks.max(axis=1).argmax; номер недели — индекс плюс один.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
week_max = ...
hottest_week = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
week_max = weeks.max(axis=1)
hottest_week = week_max.argmax() + 1Сохраните в by_weekday среднюю максимальную температуру каждого дня недели за год — 7 чисел. Первое — среды
(год начался в среду).
weeks: сворачиваем строки.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
by_weekday = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
by_weekday = weeks.mean(axis=0)Итоги
axis— ось, которую сворачивают; она исчезает из формы результата.- В таблице:
axis=0— итог для каждого столбца,axis=1— для каждой строки. - Параметр
axisесть уsum,mean,min,max,argmaxи других агрегатов.