Библиотека NumPy
Давай погрузимся в мир NumPy — библиотеки, которая делает жизнь программиста машинного обучения проще и веселее. Если ты когда-нибудь пытался работать с массивами в Python, ты знаешь, что стандартные списки не всегда подходят для серьезных вычислений. Вот тут-то и приходит на помощь NumPy!
Что такое NumPy?
NumPy (Numerical Python) — это библиотека для работы с многомерными массивами и матрицами, а также с большим набором математических функций для выполнения операций над этими массивами. Если ты думаешь, что это просто еще одна библиотека, то ты глубоко ошибаешься! Это как швейцарский нож для научных вычислений в Python.
Установка NumPy
Установить NumPy можно с помощью pip, как будто ты заказываешь пиццу:
pip install numpy
Основы работы с массивами
Давай начнем с создания массива. В NumPy массивы называются ndarray, и они намного быстрее и эффективнее, чем обычные списки Python. Например:
import numpy as np
#Создаем одномерный массив
a = np.array([1, 2, 3])
print(a) # [1 2 3]
Согласись, это выглядит довольно просто! Но давай добавим немного магии. Как насчет того, чтобы создать двумерный массив? Это как создать свой собственный маленький мир:
#Создаем двумерный массив
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
#[[1 2 3]
#[4 5 6]]
Операции с массивами
Теперь, когда у нас есть массивы, давай посмотрим, как можно с ними работать. Например, сложение массивов — это как добавление друзей к твоему списку:
c = np.array([10, 20, 30])
d = a + c
print(d) # [11 22 33]
А что насчет умножения? Это как попытаться поднять тяжести в спортзале:
e = a * 2
print(e) # [2 4 6]
Функции и методы NumPy
NumPy предлагает множество функций для работы с массивами. Например, если ты хочешь узнать среднее значение массива, это можно сделать очень легко:
mean_value = np.mean(a)
print(f"Среднее значение: {mean_value}") # Среднее значение: 2.0
Или, если ты хочешь найти максимум и минимум в массиве, просто используй:
max_value = np.max(b)
min_value = np.min(b)
print(f"Максимум: {maxvalue}, Минимум: {minvalue}") # Максимум: 6, Минимум: 1
Индексация и срезы
Не забывай про индексацию! Это как искать нужную страницу в книге:
print(b[0, 1]) # Выводит 2
print(b[:, 1]) # Выводит все элементы второго столбца: [2 5]
Маскирование и фильтрация данных
Иногда мы хотим отфильтровать данные. Это похоже на то, как ты выбираешь только те фрукты в магазине, которые тебе нравятся:
mask = a > 1
filtered_a = a[mask]
print(filtered_a) # [2 3]
Пример использования NumPy на Python
import numpy as np
import matplotlib.pyplot as plt
# Шаг 1: Создание массивов с данными о росте и весе
np.random.seed(0) # Для воспроизводимости
heights = np.random.normal(loc=170, scale=10, size=100) # Рост в см
weights = np.random.normal(loc=70, scale=15, size=100) # Вес в кг
# Шаг 2: Анализ данных
mean_height = np.mean(heights)
median_height = np.median(heights)
std_height = np.std(heights)
mean_weight = np.mean(weights)
median_weight = np.median(weights)
std_weight = np.std(weights)
print(f"Рост: Средний = {mean_height:.2f} см, Медиана = {median_height:.2f} см, Стандартное отклонение = {std_height:.2f} см")
print(f"Вес: Средний = {mean_weight:.2f} кг, Медиана = {median_weight:.2f} кг, Стандартное отклонение = {std_weight:.2f} кг")
# Шаг 3: Визуализация данных
plt.figure(figsize=(12, 5))
# График роста
plt.subplot(1, 2, 1)
plt.hist(heights, bins=15, color='skyblue', edgecolor='black')
plt.axvline(mean_height, color='red', linestyle='dashed', linewidth=1, label='Средний рост')
plt.axvline(median_height, color='green', linestyle='dashed', linewidth=1, label='Медианный рост')
plt.title('Распределение роста')
plt.xlabel('Рост (см)')
plt.ylabel('Частота')
plt.legend()
# График веса
plt.subplot(1, 2, 2)
plt.hist(weights, bins=15, color='lightgreen', edgecolor='black')
plt.axvline(mean_weight, color='red', linestyle='dashed', linewidth=1, label='Средний вес')
plt.axvline(median_weight, color='green', linestyle='dashed', linewidth=1, label='Медианный вес')
plt.title('Распределение веса')
plt.xlabel('Вес (кг)')
plt.ylabel('Частота')
plt.legend()
plt.tight_layout()
plt.show()
Описание кода:
1. Создание массивов: Мы создаем два массива: heights (рост) и weights (вес) с использованием нормального распределения. Параметры loc и scale задают среднее значение и стандартное отклонение соответственно.
2. Анализ данных: Мы используем функции NumPy для вычисления среднего значения (mean), медианы (median) и стандартного отклонения (std) для обоих массивов.
3. Визуализация: Мы создаем два гистограммы для роста и веса. На каждом графике добавляем вертикальные линии для обозначения среднего и медианного значений.
Результат:
Когда вы запустите этот код, вы увидите два графика, показывающих распределение роста и веса в вашей выборке. Вы также получите статистические характеристики в консоли.
Интересные факты о NumPy
- NumPy был создан в начале 2000-х годов и стал основой для многих других библиотек, таких как Pandas и SciPy.
- NumPy использует C для выполнения операций, что делает его невероятно быстрым. Так что если ты когда-нибудь чувствовал себя медленным, просто вспомни о NumPy!
- Существует огромное сообщество разработчиков, которые постоянно улучшают и развивают эту библиотеку.
Заключение
NumPy — это не просто библиотека; это настоящая находка для программистов машинного обучения. С его помощью ты сможешь обрабатывать данные быстрее и эффективнее. Так что не стесняйся использовать его в своих проектах!