Проект 4. Основы NumPy массивы и векторные операции

Цель

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

Описание задачи

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

Как была решена

  • Функции реализованы на основе стандартных возможностей NumPy: arange, random.rand, reshape, transpose.
  • Векторные и матричные операции выполнены в векторизованном виде без циклов: +, *, np.dot, оператор @, функции np.linalg.
  • Датасет загружался через pandas.read_csv() с преобразованием в numpy.ndarray, затем вычислялись статистики и выполнялась Min-Max нормализация.
  • Визуализации строились через matplotlib/seaborn и сохранялись в директорию plots/.
  • Корректность проверялась тестами pytest, что позволило быстро выявлять ошибки в формах массивов и вычислениях.

Нюансы при решении

  • Форма массивов: многие функции ожидают одномерный вход, поэтому при чтении данных или тестах важно использовать flatten() при ndim > 1.
  • Точность вычислений: для обратной матрицы и решения СЛАУ корректнее использовать проверки типа np.allclose, так как есть погрешности float.
  • Нормализация: при Min-Max важно корректно обрабатывать диапазон (max - min) и не смешивать типы данных.
  • Сохранение графиков: нужно явно закрывать фигуры (plt.close()), чтобы не копить объекты и не ломать последовательные тесты/запуски.
  • Пути к файлам: лучше сохранять графики в относительные пути внутри проекта (plots/), чтобы код переносился между машинами.

Задание

  1. Подготовить окружение и структуру проекта, установить зависимости (numpy, pandas, matplotlib, seaborn, pytest).
  2. Реализовать функции для работы с массивами (создание, reshape, transpose).
  3. Реализовать векторные операции без циклов (сложение, умножение, поэлементное умножение, dot-product).
  4. Реализовать матричные вычисления (умножение, det, inv, решение Ax=b).
  5. Загрузить CSV-датасет и выполнить статистический анализ и Min-Max нормализацию.
  6. Построить и сохранить визуализации (гистограмма, heatmap корреляций, линейный график).
  7. Добиться прохождения всех тестов с pytest.

Выводы

В ходе лабораторной работы были реализованы функции для выполнения численных вычислений и анализа данных с использованием NumPy. Освоены операции создания, преобразования и обработки массивов, векторные и матричные вычисления, статистический анализ и нормализация данных. Реализованы визуализации с сохранением результатов в plots/. Корректность функций подтверждена прохождением тестов pytest.

← К проектам