Условные операции и агрегирование данных в массивах

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

Условные операции

Сравнение элементов

Вы можете выполнять сравнение элементов массивов с использованием стандартных операторов сравнения. Это создает маски (булевы массивы), которые можно использовать для фильтрации данных.

import numpy as np

# Создаем массив
a = np.array([1, 2, 3, 4, 5])

# Условие: элементы больше 3
mask = a > 3  # array([False, False, False,  True,  True])

Фильтрация данных

Используя маски, можно фильтровать данные:

# Фильтрация элементов больше 3
filtered = a[a > 3]  # array([4, 5])

np.where

Функция np.where возвращает индексы элементов, удовлетворяющих условию, или выбирает элементы из двух массивов в зависимости от условия.

# Ищем индексы, где элементы больше 3
indices = np.where(a > 3)  # (array([3, 4]),)

# Заменяем элементы меньше 3 на 0
result = np.where(a < 3, 0, a)  # array([0, 0, 3, 4, 5])

np.select

Функция np.select позволяет применять несколько условий и соответствующих значений.

# Определение условий
conditions = [a < 3, (a >= 3) & (a <= 4), a > 4]
choices = [0, 1, 2]

# Применение условий
result = np.select(conditions, choices)  # array([0, 0, 1, 1, 2])

np.nonzero

Функция np.nonzero возвращает индексы ненулевых элементов массива.

# Ненулевые элементы
nonzero_indices = np.nonzero(a)  # (array([0, 1, 2, 3, 4]),)

Агрегирование данных

Агрегирование данных включает в себя вычисление сводных статистических значений и выполнение операций по всему массиву.

Основные статистические функции

  • Среднее, медиана, стандартное отклонение:

    data = np.array([1, 2, 3, 4, 5])
    
    mean = np.mean(data)  # 3.0
    median = np.median(data)  # 3.0
    std_dev = np.std(data)  # 1.4142135623730951
  • Минимум и максимум, процентиль:

    min_val = np.min(data)  # 1
    max_val = np.max(data)  # 5
    percentile_25 = np.percentile(data, 25)  # 2.0

Суммирование и произведение

  • Сумма и произведение элементов:

    sum_val = np.sum(data)  # 15
    prod_val = np.prod(data)  # 120
  • Сумма и произведение по осям в многомерных массивах:

    array_2d = np.array([[1, 2, 3], [4, 5, 6]])
    
    sum_axis0 = np.sum(array_2d, axis=0)  # array([5, 7, 9])
    sum_axis1 = np.sum(array_2d, axis=1)  # array([ 6, 15])

Кумулятивные функции

  • Кумулятивная сумма и произведение:

    cumsum = np.cumsum(data)  # array([ 1,  3,  6, 10, 15])
    cumprod = np.cumprod(data)  # array([  1,   2,   6,  24, 120])

np.unique

Функция np.unique находит уникальные элементы в массиве и может также возвращать количество вхождений каждого уникального элемента.

# Найти уникальные элементы
unique_elements = np.unique(data)  # array([1, 2, 3, 4, 5])

# Найти уникальные элементы и количество их вхождений
unique_elements, counts = np.unique(data, return_counts=True)  # (array([1, 2, 3, 4, 5]), array([1, 1, 1, 1, 1]))

np.histogram

Функция np.histogram вычисляет гистограмму данных, которая показывает распределение значений по диапазонам.

hist, bin_edges = np.histogram(data, bins=3)
# hist: [1, 2, 2]
# bin_edges: [1. , 2.33333333, 3.66666667, 5. ]

Заключение

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

Last updated