Проект 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/), чтобы код переносился между машинами.
Задание
- Подготовить окружение и структуру проекта, установить зависимости (
numpy,pandas,matplotlib,seaborn,pytest). - Реализовать функции для работы с массивами (создание,
reshape,transpose). - Реализовать векторные операции без циклов (сложение, умножение, поэлементное умножение,
dot-product). - Реализовать матричные вычисления (умножение,
det,inv, решениеAx=b). - Загрузить CSV-датасет и выполнить статистический анализ и Min-Max нормализацию.
- Построить и сохранить визуализации (гистограмма, heatmap корреляций, линейный график).
- Добиться прохождения всех тестов с pytest.
Выводы
В ходе лабораторной работы были реализованы функции для выполнения численных вычислений и анализа данных с
использованием NumPy. Освоены операции создания, преобразования и обработки массивов, векторные и матричные
вычисления, статистический анализ и нормализация данных. Реализованы визуализации с сохранением результатов в plots/.
Корректность функций подтверждена прохождением тестов pytest.