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

Мини-проект: жаркие и морозные дни

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

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

Снова погода в Москве за 2025 год — теперь с масками. Новых понятий нет: сравнения, фильтры, &, |, замена по условию, а ещё срезы и итоги из прошлых модулей.

[ ]Данные
import numpy as np

weather = np.loadtxt("data/moscow_2025.csv", delimiter=",", skiprows=1)
tmin = weather[:, 1]
tmax = weather[:, 2]
precip = weather[:, 3]
print(weather.shape)
Выводсохранённый · нажмите «Выполнить», чтобы получить свой
(365, 4)

Шаг 1. Номера дней

Маска выбирает позиции в любом массиве той же длины. Если сделать массив номеров дней 1, 2, …, 365, маска по температуре покажет, какие это дни.

[ ]Упражнение 1Когда было жарко решено

Создайте массив days — номера дней от 1 до 365, — и сохраните в hot_days номера дней, когда максимальная температура была выше 25 °C.

days = ...
hot_days = ...

[ ]Жаркие дни
print(hot_days)
print(tmax[tmax > 25])
Выводсохранённый · нажмите «Выполнить», чтобы получить свой
[173 195 196 197 198 199 200 218 223]
[26.  25.3 26.3 27.2 26.3 25.6 26.  26.  25.4]
Вывод появится, когда решите упражнение «Когда было жарко», — иначе он подскажет ответ. Ячейку можно и выполнить.

Большинство жарких дней — одна волна жары в середине июля (дни 195–200).

Пояснение с ответом появится, когда решите упражнение «Когда было жарко».

Шаг 2. Июль

[ ]Упражнение 2Каким был июль решено

Июль — дни с индексами 181–211. Сохраните в july максимальные температуры июля, в july_avg — их среднее, а в july_warm — сколько июльских дней было теплее 20 °C.

july = ...
july_avg = ...
july_warm = ...

Шаг 3. Сильные осадки

[ ]Упражнение 3Ливни решено

Сохраните в rain_share долю дней с осадками (больше 0 мм), а в heavy_days — номера дней, когда выпало больше 10 мм.

rain_share = ...
heavy_days = ...

Шаг 4. Зима и лето

Зима — декабрь, январь и февраль: дни с 1-го по 59-й и с 335-го до конца года. Лето — с 152-го по 243-й день. Маски строятся по номерам дней.

[ ]Упражнение 4На сколько зима холоднее лета решено

Сохраните в winter маску зимних дней, в summer — летних, а в gap — на сколько градусов средний максимум лета выше среднего максимума зимы.

winter = ...
summer = ...
gap = ...

Шаг 5. Выбросы датчика

Датчик осадков иногда завышает показания: больше 20 мм за день на этой станции не бывает, такие значения считаем ошибкой и приравниваем к 20.

[ ]Упражнение 5Поправить осадки решено

Сохраните в precip_fixed осадки, прижатые сверху к 20 мм (снизу — к 0), а в rain_total_fixed — сумму осадков за год после поправки.

precip_fixed = ...
rain_total_fixed = ...

Выводы

[ ]Итоги
print("жарких дней:", len(hot_days), "— больше всего подряд в июле:", hot_days[1:7])
print("доля дней с осадками:", round(rain_share, 2), "| ливней:", len(heavy_days))
print("лето теплее зимы на", round(gap, 1), "°C")
print("осадков за год после поправки:", round(rain_total_fixed, 1), "мм")
Выводсохранённый · нажмите «Выполнить», чтобы получить свой
жарких дней: 9 — больше всего подряд в июле: [195 196 197 198 199 200]
доля дней с осадками: 0.46 | ливней: 11
лето теплее зимы на 24.8 °C
осадков за год после поправки: 705.7 мм
Итог появится, когда решите все упражнения урока, — в нём ответы. Ячейку можно и выполнить.

Жарких дней за год — девять, и большинство из них — одна неделя в июле. Осадки шли почти в половину дней, но сильные — всего 11 раз. Лето в среднем теплее зимы почти на 25 градусов. Каждый ответ — одна строка с маской.

Выводы с ответами появятся, когда решите все упражнения урока.

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

Практика по модулю

Задачи по NumPy для самостоятельной практики появятся в разделе «Задачи → NumPy».

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