Экосистема

Зачем Python так любит библиотеки

Python давно перестал быть только языком для маленьких учебных скриптов. Его сила в том, что разработчик почти никогда не начинает с пустоты: нужный инструмент уже есть в стандартной библиотеке или в экосистеме PyPI. Вместо того чтобы заново писать HTTP-клиент, систему тестов, работу с таблицами или тензорами, можно подключить готовый пакет и сосредоточиться на своей задаче.

Библиотека - это ускоритель разработки. Она сокращает время на рутину, уменьшает число ошибок и даёт проверенные решения для типовых задач. Именно поэтому Python особенно популярен в автоматизации, аналитике, машинном обучении и быстрых прототипах.

На этом уроке мы не будем бездумно перечислять названия. Мы разберём, какую проблему решает каждая библиотека, как понимать её место в проекте и почему для работы с моделями ИИ особенно важны NumPy и PyTorch.

Александр
Наконец урок, где можно понять, что ставить, а что не тащить в проект без причины.
База

Стандартная библиотека и внешние пакеты

В Python есть два больших мира. Первый - стандартная библиотека, которая ставится вместе с языком: json, math, pathlib, datetime, sqlite3, unittest и десятки других модулей. Второй - внешние пакеты, которые мы устанавливаем отдельно через pip: requests, pandas, numpy, torch и так далее.

Правильный вопрос звучит не так: "Что моднее?". Он звучит так: "Мне достаточно стандартной библиотеки или задача уже требует специализированного инструмента?". Если можно решить задачу простым встроенным модулем - это часто лучший вариант. Если нужна скорость, богатый API или отраслевой стандарт - берём внешнюю библиотеку.

Установка

Как ставят библиотеки - pip и виртуальные окружения

Библиотеки чаще всего устанавливают через pip install имя_пакета. Но в реальных проектах почти всегда используют виртуальное окружение: отдельную изолированную папку с собственными зависимостями. Это спасает от конфликта версий между разными проектами и делает окружение воспроизводимым.

Минимальный рабочий набор команд и что делает каждый элемент:

  • python -m venv .venvpython запускает интерпретатор; -m venv говорит «запусти встроенный модуль venv»; .venv — имя папки, в которой будет создано окружение (можно другое, например venv). В результате в текущей директории появится каталог с копией интерпретатора и местом для пакетов.
  • Активация окружения: в Windows — .venv\Scripts\activate, в Linux/macOS — source .venv/bin/activate. После этого в командной строке будет использоваться Python и pip именно из этого окружения.
  • pip install numpy torch — ставит пакеты уже внутрь активированного окружения, а не в систему.
  • pip freeze > requirements.txt — выводит список установленных пакетов с версиями в файл requirements.txt, чтобы потом воспроизвести окружение командой pip install -r requirements.txt.
Живой пример - посмотреть сценарий установки
Мария
А если ставить всё глобально, потом версии не поссорятся?
Дмитрий
Как раз поссорятся: один проект потянет старую версию библиотеки, другой - новую, и pip не сможет удовлетворить обоих. Поэтому и нужен venv - у каждого проекта свой набор версий.
Практика работы

Как выбирать библиотеку без хаоса

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

При выборе библиотеки смотри на четыре вещи: зрелость проекта, качество документации, активность сообщества и соответствие задаче. Хорошая библиотека не та, у которой громкое название, а та, которая закрывает конкретную проблему надёжно и без лишней сложности.

Дмитрий
То есть venv - не ритуал, а защита от конфликтов версий.
Повседневные пакеты

Requests, httpx и Beautiful Soup

Для сетевых запросов чаще всего начинают с requests. Библиотека проста: отправить GET или POST, передать JSON, получить статус и текст ответа. Если нужен современный асинхронный клиент, часто выбирают httpx. Для парсинга HTML поверх ответа удобно подключать beautifulsoup4.

В реальном проекте связка может выглядеть так: получить страницу через requests, разобрать её через Beautiful Soup, выбрать нужные теги и сохранить результат в CSV. Это типичный пример того, как одна библиотека решает сетевую часть, а другая - обработку структуры документа.

Живой пример - что меняется в зависимости от задачи
Качество кода

Pytest, black и ruff

Не все полезные библиотеки работают с данными или ИИ. Очень много пользы приносят инструменты качества. pytest помогает быстро писать тесты и проверять функции на разных наборах входных данных. black форматирует код в едином стиле, а ruff быстро находит ошибки и нарушения правил.

Если библиотека помогает не только писать код, но и поддерживать его чистым, это уже сильный вклад в проект. Без тестов и статических проверок даже хороший алгоритм быстро превращается в трудно поддерживаемый комок кода.

Аналитика

Pandas - когда данные похожи на таблицу

pandas особенно удобен тогда, когда данные похожи на таблицу: строки, столбцы, CSV-файлы, статистика по группам, фильтрация, пропуски. Его базовый объект - DataFrame. Это отличный инструмент для аналитики, подготовки датасета и быстрых отчётов.

Но важно помнить: под капотом pandas часто опирается на NumPy. Поэтому в проектах с данными NumPy выступает фундаментом для численных операций, а pandas - удобной оболочкой для табличного представления и обработки.

Ольга
То есть pandas нужен всегда, если есть NumPy?
Аналитика

Визуализация - matplotlib и seaborn

Pandas не обязателен всегда. Если задача - быстрые численные операции над массивами, достаточно NumPy. Если нужен табличный анализ, группировки и загрузка CSV - pandas сильно ускоряет работу. Выбирай по форме данных, а не по привычке.

Для визуализации чаще всего подключают matplotlib, а для более удобных статистических графиков - seaborn. На практике это помогает увидеть распределение признаков, выбросы, тренды и связь между переменными ещё до обучения модели.

Александр
Значит pandas - это не замена NumPy, а уровень удобства над ним.
Главная библиотека

NumPy - фундамент численных вычислений

NumPy - одна из важнейших библиотек Python. Она даёт тип ndarray, то есть многомерный массив, в котором данные хранятся компактно и обрабатываются быстро. Там, где обычные списки Python начинают тормозить, NumPy позволяет считать над массивами целыми блоками.

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

NumPy

Что такое ndarray, shape и dtype

Массив NumPy имеет форму shape, тип данных dtype и размерность ndim. Например, вектор из четырёх чисел имеет форму (4,), а таблица 3 на 2 - форму (3, 2). Тип важен для памяти и вычислений: int32, float32, float64 и другие.

В машинном обучении типы особенно важны: признаки и веса модели часто держат в float32, чтобы экономить память и ускорять вычисления. Если не контролировать типы, можно получить лишние преобразования и странные ошибки на стыке библиотек.

Живой пример - посмотреть форму массива
NumPy

Почему векторизация быстрее обычных циклов

Одна из причин популярности NumPy - векторизация. Вместо цикла по каждому элементу мы пишем действие сразу для всего массива: arr * 2, arr + 5, arr.mean(). Это выглядит проще и чаще работает быстрее, потому что значительная часть вычислений вынесена в оптимизированный низкоуровневый код.

В задачах ИИ это критично: признаки, батчи, вероятности, матрицы весов и ошибки считаются большими блоками. Когда ты думаешь массивами, а не отдельными числами, код становится ближе к математической записи модели.

NumPy

Broadcasting и линейная алгебра

Broadcasting - это правило, по которому NumPy умеет применять операцию к массивам разной формы, если они совместимы. Например, можно прибавить вектор сдвигов ко всем строкам матрицы сразу. Это часто используется при нормализации признаков и обработке батчей данных.

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

NumPy в ИИ

Как NumPy помогает перед обучением модели

Обычно работа с моделью начинается не с нейронной сети, а с подготовки данных. Нужно собрать числовые признаки, очистить пропуски, нормализовать значения, посчитать статистику и убедиться, что форма входных данных корректна. На этом участке NumPy незаменим.

Даже простой расчёт среднего, дисперсии или нормализации признаков уже влияет на устойчивость обучения. Поэтому NumPy - не "просто библиотека про массивы", а реальный рабочий инструмент подготовки входа для ИИ.

std (standard deviation) — это стандартное отклонение: мера разброса чисел вокруг среднего. Чем больше std, тем сильнее значения «разъезжаются». В NumPy считается методом .std().

Нормализация — приведение признаков к одному масштабу, чтобы модель обучалась стабильнее. Часто делают так: вычесть среднее и поделить на стандартное отклонение; тогда данные получают среднее 0 и разброс около 1. Ниже в примерах — расчёт среднего и std, а затем такая нормализация.

Живой пример - статистика по признакам
Дмитрий
Получается, модель ещё не началась, а NumPy уже нужен почти сразу.
Глубокое обучение

PyTorch - библиотека для тензоров и моделей

PyTorch - один из главных стандартов в современном deep learning. Он даёт тензоры, автоматическое вычисление градиентов, набор готовых слоёв и удобный способ описывать нейросети кодом. Благодаря этому библиотека подходит и для обучения, и для исследовательских экспериментов, и для промышленных моделей.

Если NumPy отвечает за быстрые массивы и численные операции, то PyTorch добавляет всё, что нужно для обучения моделей: вычислительный граф, оптимизаторы, слои nn, функции потерь и поддержку CPU/GPU.

PyTorch

Tensor - родственник ndarray, но с прицелом на обучение

Тензор в PyTorch очень похож на массив NumPy: у него тоже есть форма, тип данных и операции поэлементного вычисления. Но тензор умеет жить на GPU, участвовать в вычислительном графе и хранить информацию для обратного прохода. Именно это делает его удобным для обучения нейросетей.

На практике переход между NumPy и PyTorch встречается часто: данные подготовили как массив, затем превратили в тензор, прогнали через модель и получили результат. Чем лучше ты понимаешь сходство и различие этих объектов, тем легче строить pipeline ИИ.

Мария
Tensor и ndarray - это почти одно и то же?
PyTorch

Где сходство, а где уже начинается обучение модели

По форме данных они действительно похожи. И ndarray, и tensor позволяют хранить числа в одномерном или многомерном виде. Но PyTorch идёт дальше: тензор можно поместить на видеокарту и связать с механизмом вычисления градиентов. Поэтому для классической аналитики хватает NumPy, а для обучения сетей нужен PyTorch.

Хорошее правило: NumPy - для подготовки и численной обработки, PyTorch - для модели, обучения и инференса. На практике они не конкурируют, а работают вместе.

Ольга
Значит tensor - это уже шаг в сторону модели и вычислений на ускорителях.
PyTorch

Autograd - почему сеть может учиться

Самая важная магия PyTorch - это autograd, система автоматического дифференцирования. Когда тензоры участвуют в вычислениях, библиотека может построить цепочку операций и потом сама посчитать, как меняется ошибка по отношению к параметрам модели. Именно это и нужно для обучения через градиентный спуск.

Тебе не нужно вручную выводить производные для каждого слоя обычной сети. Достаточно описать прямой проход, выбрать функцию потерь и вызвать обратный проход. В этом месте PyTorch кардинально отличается от обычной численной библиотеки.

Живой пример - от тензора к модели
PyTorch

Слои, nn.Module и прямой проход

В PyTorch модель часто строят из готовых блоков: torch.nn.Linear, ReLU, Conv2d, LSTM и других. Эти блоки объединяются в класс, наследующийся от nn.Module. Внутри мы описываем, как данные проходят через сеть в методе forward.

Даже если модель пока очень маленькая, структура остаётся взрослой: входной тензор, слой, выход, функция потерь, оптимизатор. Освоив этот шаблон один раз, ты потом узнаешь его почти в любом проекте на PyTorch.

PyTorch

Как выглядит цикл обучения модели

Типичный цикл обучения выглядит так: загрузить батч данных, сделать прямой проход, посчитать функцию потерь, вызвать loss.backward(), затем optimizer.step() и обнулить градиенты через optimizer.zero_grad(). Этот ритм повторяется снова и снова на эпохах обучения.

Даже если пока не запоминать каждую строчку, важно понять архитектуру процесса. Модель учится не "по волшебству", а через повторяющийся вычислительный цикл, где PyTorch считает градиенты и обновляет веса по правилам оптимизации.

Александр
Похоже на конвейер: данные - ошибка - обновление - снова данные.
Связка библиотек

NumPy и PyTorch вместе, а не по отдельности

Очень частый сценарий выглядит так: сначала данные приходят как CSV или JSON, затем через pandas и NumPy очищаются и превращаются в числовой массив, потом этот массив переводится в тензор PyTorch, и уже после этого попадает в модель. Получается связка: таблица - массив - тензор - модель.

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

Ещё полезное

Полезные библиотеки рядом с ИИ

Кроме NumPy и PyTorch, полезно знать и другие библиотеки. scikit-learn хорош для классического машинного обучения, метрик и готовых алгоритмов. transformers часто используют для современных NLP и LLM-задач. opencv-python пригодится для компьютерного зрения, а jupyter удобен для экспериментов и демонстраций.

Но здесь важно не распыляться. Лучше уверенно понимать базовую связку numpy + pytorch, чем знать названия десятка пакетов без понимания того, как они реально включаются в задачу.

Дмитрий
Если библиотека свежая и очень хайповая, это автоматически лучший выбор?
Выбор инструментов

Почему зрелость важнее шума вокруг библиотеки

Нет, хайп не равен качеству. Смотри на документацию, частоту обновлений, наличие примеров, совместимость с твоей версией Python и реальные кейсы использования. Если библиотека делает одну красивую демку, но плохо документирована и нестабильна, она быстро станет источником технического долга.

Для учебных и рабочих задач разумно опираться на зрелые инструменты. Поэтому requests, pytest, numpy, pandas и torch так часто встречаются: они давно проверены на практике и вокруг них огромная база знаний.

Мария
Запомнила: не гоняться за модой, а смотреть на задачу и зрелость инструмента.
Проектная практика

Как может выглядеть стек в учебном ИИ-проекте

Представь задачу предсказания значения по набору признаков. Данные лежат в CSV. Тогда стек может быть таким: pandas для чтения файла, numpy для преобразования таблицы в числовой массив и нормализации, torch для модели, matplotlib для графика потерь, pytest для проверки вспомогательных функций.

Такой стек кажется большим, но каждая библиотека отвечает только за свой участок. Это и есть зрелый подход: не делать всё одной библиотекой, а соединять инструменты по ролям.

тут картинка: схема пути данных от CSV через NumPy к тензору PyTorch и выходу модели
Итог

Что нужно вынести из теории перед практикой

Библиотеки Python - это не украшение проекта, а рабочие инструменты. requests и Beautiful Soup помогают получать и разбирать данные, pytest и ruff держат код в порядке, pandas удобен для таблиц, NumPy даёт быстрые массивы и численные операции, а PyTorch превращает тензоры в обучаемые модели.

Самая важная связка урока: NumPy подготавливает и считает, PyTorch моделирует и обучает. Сейчас это закрепим на задачах, где придётся не просто узнавать названия, а выбирать инструмент по смыслу и собирать рабочий pipeline.

Ольга
Готова к заданиям. Особенно хочу проверить, где заканчивается NumPy и начинается PyTorch.

Интерактив 1 - выберите библиотеку по задаче

Задание 1. Сопоставьте библиотеку и её главную роль

requests
pytest
pandas
NumPy
PyTorch

Задание 2. Что особенно уместно в учебном проекте по ИИ? Выберите несколько вариантов

Интерактив 2 - соберите pipeline для модели

Задание 3. Расставьте шаги по порядку - от сырых данных до обновления модели

Передать тензор в модель
Посчитать loss
Собрать числовые признаки
Обновить веса оптимизатором
Преобразовать данные в массив NumPy
Преобразовать массив в tensor PyTorch

Задание 4. Выберите верные утверждения

Задание 5. Нужно обучить нейросеть и посчитать градиенты. Какую библиотеку выбрать в первую очередь?

Интерактив 3 - вставьте правильные фрагменты кода

Ниже каркас учебного скрипта. Выберите подходящие конструкции так, чтобы получилось корректное сочетание NumPy и PyTorch.

import numpy as import torch values = ([1.0, 2.0, 3.0, 4.0], dtype=np.float32) mean_value = values.() tensor = torch.tensor(values, dtype=torch.float32) model = torch.nn.(4, 1)

Выберите, что обязательно должно остаться в финальном решении

Финальный допуск

Ответьте минимум на 8 из 10 вопросов правильно, чтобы открыть практику.

1. Для чего чаще всего используют requests?

2. Что является ключевым объектом NumPy?

3. Что особенно отличает PyTorch от NumPy?

4. Какая библиотека удобна для тестов?

5. Что чаще всего делают в NumPy перед обучением модели?

6. Какой слой есть в PyTorch?

7. Что лучше описывает связку NumPy и PyTorch?

8. Что помогает изолировать зависимости проекта?

9. Какая библиотека особенно удобна для DataFrame?

10. Что делает loss.backward() в типичном цикле обучения?

Практика - соберите мини-сценарий с NumPy и PyTorch

Подготовьте файл libs_showcase.py и загрузите его на проверку. Цель - показать, что вы умеете связать числовую подготовку данных и простой элемент модели.

  • Импортируйте numpy as np и torch.
  • Создайте массив features через np.array(..., dtype=np.float32) минимум из 4 чисел.
  • Посчитайте и выведите среднее значение массива.
  • Преобразуйте массив в тензор features_tensor с типом torch.float32.
  • Создайте модель torch.nn.Linear(4, 1).
  • Передайте в неё батч вида features_tensor.unsqueeze(0) и выведите результат.
  • Добавьте хотя бы один комментарий, где кратко указано, что делает NumPy или PyTorch в вашем файле.
Порог зачёта - 60 баллов. Проверка смотрит на структуру решения и ключевые конструкции, а не на конкретные числа предсказания.
import numpy as np import torch # NumPy подготавливает числовые данные features = np.array([1.0, 2.0, 3.0, 4.0], dtype=np.float32) print("mean:", features.mean()) # PyTorch использует тензор и модель features_tensor = torch.tensor(features, dtype=torch.float32) model = torch.nn.Linear(4, 1) prediction = model(features_tensor.unsqueeze(0)) print("prediction:", prediction)

Загрузите файл Python для проверки