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

Курс с нуля

NumPy

Массивы NumPy с нуля: от первого массива до масок, осей, транслирования, случайных чисел и линейной алгебры. Каждый модуль заканчивается мини-проектом на настоящих данных.

10 модулей43 урока≈ 12 ч
пройдено 0 из 43
Начать курс

Для кого

Для тех, кто знает основы Python и ни разу не работал с NumPy. Курс доводит до уверенного рабочего уровня: вы сможете загрузить числовые данные, посчитать по ним что нужно и не писать для этого циклы.

Что нужно знать

  • Базовый Python: списки и срезы, словари, циклы, функции, генераторы списков. Первый урок курса — «Python-минимум» с самопроверкой: он подскажет, что повторить.
  • Установка ничего не нужна: код выполняется прямо в браузере. Любой урок можно скачать как .ipynb и пройти в Jupyter или Google Colab.

Как устроены уроки

Урок — это ноутбук: короткое объяснение, код, который можно выполнить и изменить, упражнения с проверкой и вопросы. Python работает прямо в браузере; урок можно скачать как .ipynb для Jupyter или Colab.

Программа

Модуль 1

Первые шаги

Что такое массив NumPy, чем он лучше списка для чисел и как считать сразу по всем элементам.

  1. Python-минимумСамопроверка перед курсом — списки и срезы, словари, циклы, функции, генераторы списков. Если всё решается легко, вы готовы.15 мин
  2. Первый массивЧто такое массив NumPy, чем он отличается от списка и как одной строкой посчитать что-то для всех элементов сразу.15 мин
  3. Массив с массивомАрифметика между двумя массивами — поэлементно, пара за парой; целочисленное деление и остаток; что будет, если длины разные.15 мин
  4. Итоги по массивуСумма, среднее, минимум и максимум одним вызовом — и где именно находится максимум. Почему в выводе np.float64(…).15 мин
  5. мини-проектМини-проект: расходы за две неделиРазобрать траты за две недели — средние, изменения, перевод в другую валюту, самый дорогой день, остаток бюджета и доли дней.20 мин
После модуля вы умеете
  • создавать массив из списка: np.array
  • считать по всем элементам без цикла: prices * 0.9, a + b
  • находить сумму, среднее, минимум и максимум и то, где он находится
Модуль 2

Создание и форма

Как создать массив нужного размера без списков, что такое двумерный массив, форма и тип данных, как загрузить числа из файла.

  1. Массивы без списковНули, единицы, одно и то же число, ряды с шагом и равные промежутки — массив нужного размера одной функцией.15 мин
  2. Двумерные массивыТаблица чисел как массив из строк и столбцов — форма shape, число измерений ndim, число элементов size.15 мин
  3. Типы данныхУ всех элементов массива один тип — целый, дробный или логический. Как его узнать и поменять и почему astype(int) отбрасывает дробную часть.15 мин
  4. Массив из файлаЗагрузить числа из CSV-файла — всю таблицу или один столбец — и сохранить результат обратно в файл.15 мин
  5. мини-проектМини-проект: погода в МосквеЗагрузить погоду за год из файла и ответить на вопросы — самый тёплый день и самая холодная ночь, средний перепад температур, градусы Фаренгейта, самый дождливый день.20 мин
После модуля вы умеете
  • создавать массивы нужного размера: zeros, ones, full, arange, linspace
  • понимать форму двумерного массива: shape, ndim, size
  • знать тип элементов и менять его: dtype, astype
  • загружать числа из CSV-файла и сохранять результат: np.loadtxt, np.savetxt
Модуль 3

Индексы и срезы

Как достать из массива отдельный элемент, кусок, строку или столбец таблицы, изменить их и поменять форму массива.

  1. Индексы и срезыДостать из массива один элемент или кусок — январь из года, последнюю неделю, каждый седьмой день — и заменить значения.15 мин
  2. Двумерная индексацияВ таблице элемент — это пара индексов [строка, столбец]; отсюда строка, столбец и прямоугольный блок одной записью.15 мин
  3. Срез — это окноСрез не копирует данные, а смотрит на тот же массив — изменив срез, вы меняете исходник. Когда это удобно, когда опасно и как сделать копию.15 мин
  4. Меняем формуТе же числа — другая таблица — reshape разложит год по неделям, -1 досчитает размер сам, ravel вытянет обратно в ряд, .T повернёт таблицу.15 мин
  5. мини-проектМини-проект: картинка из чиселЧёрно-белая картинка — это таблица из нулей и единиц. Нарисовать рамку и крест срезами, посчитать закрашенные точки, отразить, повернуть и обрезать изображение.20 мин
После модуля вы умеете
  • брать элементы и срезы: a[i], a[-1], a[start:stop:step]
  • работать с таблицей: элемент a[i, j], строка a[i], столбец a[:, j], блок
  • понимать, когда изменение среза меняет исходный массив, и делать копию: copy()
  • менять форму: reshape, ravel, .T
Модуль 4

Условия и маски

Сравнение массива даёт логический массив — маску. По маске считают, отбирают и заменяют значения без циклов.

  1. СравненияСравнение массива с числом даёт логический массив — маску. Её сумма отвечает на вопрос «сколько», среднее — «какая доля», any и all — «есть ли хоть один» и «все ли».15 мин
  2. Фильтр по маскеМаска в квадратных скобках оставляет только подходящие элементы. Несколько условий соединяют знаками &, | и ~ — и обязательно в скобках.15 мин
  3. Условная заменаЗаменить значения, которые подходят под условие, — присваиванием по маске, выбором из двух вариантов np.where и ограничением границами np.clip.15 мин
  4. мини-проектМини-проект: жаркие и морозные дниОтветить на вопросы о погоде за год масками — какие дни были жаркими, каким был июль, когда лило сильнее всего, насколько зима холоднее лета — и поправить выбросы датчика.20 мин
После модуля вы умеете
  • сравнивать массивы и считать, сколько элементов подходит: a > 25, (a > 25).sum(), any, all
  • отбирать элементы по условию: a[mask], условия вместе через &, |, ~
  • заменять значения по условию: присваивание по маске, np.where, np.clip
Модуль 5

Оси и статистика

Итоги по строкам и по столбцам таблицы, накопленные суммы, медиана и разброс, сортировка и подсчёт уникальных значений.

  1. Оси: axis=0 и axis=1Итоги по столбцам и по строкам таблицы одним вызовом — параметр axis. Как не перепутать, какая ось какая.15 мин
  2. Где максимум в каждой строкеargmax и argmin по осям — лучший месяц каждого магазина; накопленные суммы cumsum — итог с начала года; первый True в маске — когда впервые достигнута цель.15 мин
  3. СтатистикаМедиана, когда среднее обманывает; разброс std; процентили — «какой балл лучше, чем у 90 % группы»; округление np.round и его неожиданное правило.15 мин
  4. Сортировка и уникальныеОтсортировать значения, получить порядок индексов argsort — и с его помощью расставить по местам имена; посчитать, какие значения встречаются и сколько раз.15 мин
  5. мини-проектМини-проект: ведомость группыРазобрать оценки 30 студентов по пяти предметам — средние по предметам и студентам, лучшие, рейтинг, кто сдал всё, кто в зоне риска.20 мин
После модуля вы умеете
  • считать итоги по строкам и столбцам: axis=0 и axis=1 — и не путать их
  • находить, где максимум в каждой строке, считать накопленные суммы: argmax(axis=…), cumsum
  • описывать данные: np.median, std, np.percentile, np.round
  • сортировать и ранжировать, считать уникальные значения: np.sort, np.argsort, np.unique
Модуль 6

Транслирование

Как NumPy выполняет операции с массивами разной формы: строка к таблице, столбец к таблице, таблица всех пар — и нормализация данных.

  1. Массивы разной формыКак NumPy складывает таблицу со строкой — правила транслирования (broadcasting) и как по формам заранее понять, получится ли операция.15 мин
  2. Столбец и строкаОдномерный массив всегда прикладывается как строка. Чтобы приложить его как столбец, нужна форма (n, 1) — через np.newaxis или keepdims=True. Таблица всех пар и ловушка квадратной матрицы.15 мин
  3. НормализацияКак сравнивать величины разного масштаба — отклонение от среднего, z-оценка и приведение к отрезку от 0 до 1, по каждому столбцу одной строкой.15 мин
  4. мини-проектМини-проект: калькулятор ценСобрать прайс-лист «товар × количество» из себестоимости, наценок по товарам и скидок за объём — таблица всех пар, строки и столбцы в одном выражении.20 мин
После модуля вы умеете
  • понимать правила транслирования и предсказывать форму результата
  • прибавлять к таблице строку и столбец: (n,) против (n, 1), np.newaxis, keepdims=True
  • нормализовать данные: отклонение от среднего, z-оценка, приведение к 0–1
Модуль 7

Случайные числа

Генератор случайных чисел с seed, распределения и гистограммы, и моделирование: тысячи экспериментов одной операцией вместо цикла.

  1. Генератор случайных чиселСлучайные целые и дробные числа, случайный выбор из списка — и зачем генератору seed, чтобы «случайный» результат повторялся.15 мин
  2. Распределения и гистограммыНормальное и равномерное распределения — рост людей и время ожидания; гистограмма np.histogram — сколько значений в каждом интервале; np.bincount — сколько раз каждое целое.15 мин
  3. Моделирование без цикловСто тысяч экспериментов одной таблицей — сумма двух кубиков, число π методом Монте-Карло, парадокс дней рождения. Вероятность — доля удачных строк.20 мин
  4. мини-проектМини-проект: кости и играПроверить, честный ли кубик, найти самую частую сумму трёх кубиков, посчитать точную вероятность перебором всех исходов и выяснить, выгодна ли игра «15 и больше».20 мин
После модуля вы умеете
  • получать воспроизводимые случайные числа: np.random.default_rng(seed), integers, random, choice
  • генерировать данные с нужным распределением и смотреть на них: normal, uniform, np.histogram, np.bincount
  • моделировать случайные процессы векторно и оценивать вероятности по доле исходов
Модуль 8

Пропуски и сборка данных

Настоящие данные бывают неполными и приходят по частям: NaN и функции, которые его пропускают, чтение файлов с пустыми полями, склеивание и разрезание массивов.

  1. Пропуски: NaNКак NumPy хранит «нет данных» — значение NaN; почему с ним ломаются суммы и сравнения, как найти пропуски np.isnan и посчитать итоги без них nan-функциями.15 мин
  2. Файлы с пропускамиЗагрузить CSV с пустыми полями — np.genfromtxt превращает их в NaN; заполнить пропуски при чтении filling_values= или потом np.nan_to_num и понять, чем опасен ноль.15 мин
  3. Склеить и разделитьСобрать массив из частей — np.concatenate по существующей оси, np.stack с новой осью, np.vstack и np.hstack — и разрезать его на части np.split.20 мин
  4. мини-проектМини-проект: метеостанцииСобрать данные трёх станций в одну таблицу, заполнить пропуски показаниями соседей, посчитать недельные средние, найти «остров тепла» в центре города и сохранить отчёт в файл.20 мин
После модуля вы умеете
  • находить и считать пропуски: np.nan, np.isnan, и считать итоги без них — np.nanmean, np.nansum
  • загружать файлы с пустыми полями: np.genfromtxt, filling_values=, np.nan_to_num
  • собирать массив из частей и делить на части: np.concatenate, np.stack, np.vstack, np.hstack, np.split
Модуль 9

Векторизация и линейная алгебра

Математические функции над целыми массивами вместо циклов, матричное умножение и расстояния между точками — основа рекомендаций и машинного обучения.

  1. Векторизация вместо цикловМатематические функции NumPy работают с целым массивом сразу — np.sqrt, np.abs, np.log10, np.exp; поэлементные np.maximum и np.minimum; как переписать цикл с условием в одну строку.20 мин
  2. Матричное умножениеСумма попарных произведений — скалярное произведение np.dot; оператор @ для таблиц — заказы × цены, оценки × веса; правило форм (m, n) @ (n, k) → (m, k).20 мин
  3. Расстояния между точкамиДлина вектора и расстояние между точками np.linalg.norm, расстояния от точки до многих, таблица всех попарных расстояний транслированием и ближайший сосед каждой точки.15 мин
  4. дополнительноСистемы уравненийНайти неизвестные по нескольким суммам — цены по чекам, состав смеси. Система линейных уравнений в виде A @ x = b и её решение np.linalg.solve.10 мин
  5. мини-проектМини-проект: ближайшие соседиМетод k ближайших соседей на NumPy — порекомендовать напиток по оценкам похожих гостей и предсказать продажи по похожим дням; почему перед расстояниями признаки нужно нормализовать.20 мин
После модуля вы умеете
  • переписывать циклы векторно: np.sqrt, np.abs, np.exp, np.log, np.maximum
  • умножать матрицы оператором @ и понимать, когда формы подходят
  • считать расстояния между точками и попарные расстояния транслированием; дополнительно — решать системы уравнений np.linalg.solve
Модуль 10

Итоговый проект «Кофейня за год»

Весь курс в одном проекте: загрузить продажи интернет-магазина кофе за 2025 год и ответить только средствами NumPy — сколько заработали, на чём, где и когда.

  1. мини-проектИтоговый проект: выручкаПродажи «Кофейной лавки» за 2025 год — загрузить числа и текст из одного CSV, посчитать выручку, средний чек, выручку по категориям, товарам и городам одной операцией np.bincount с весами и разобрать «грязную» выгрузку службы доставки с пропусками.25 мин
  2. мини-проектИтоговый проект: динамикаКак менялись продажи «Кофейной лавки» в течение 2025 года — выручка по месяцам и кварталам, лучший и худший месяц, рост к прошлому месяцу, накопленный итог и доли каналов продаж по месяцам.20 мин
После модуля вы умеете
  • загружать из CSV числовые и текстовые столбцы и считать по ним итоги
  • разбирать «грязную» выгрузку: склеить файлы, посчитать пропуски и не дать им исказить ответ
  • группировать без циклов: коды групп np.unique(…, return_inverse=True) и суммы по группам np.bincount(…, weights=…)
  • анализировать динамику: суммы по месяцам, изменения, накопленный итог, доли каналов по месяцам