Поиск по сайту:

Как подсчитать частоту уникальных значений в массиве NumPy?


Анализ частоты появления уникальных значений в массиве NumPy — распространенная задача при анализе данных. Он предоставляет ценную информацию о распределении и встречаемости элементов, обеспечивая эффективное исследование и предварительную обработку данных. В этой статье мы рассмотрим различные методы подсчета частоты уникальных значений в массивах NumPy. Используя встроенные функции NumPy и внешние библиотеки, такие как pandas и коллекции, мы проведем вас через пошаговую реализацию этих методов. Благодаря этому подробному руководству вы получите необходимые знания для точного анализа и извлечения значимой информации из массивов NumPy.

Способ 1: использование функции np.unique()

NumPy предоставляет функцию np.unique(), которая возвращает отсортированные уникальные элементы массива. Указав параметр return_counts=True, он также возвращает количество каждого уникального элемента. Давайте посмотрим, как мы можем использовать эту функцию для подсчета частоты уникальных значений в массиве NumPy:

import numpy as np

# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])

# Get the unique values and their counts
unique_values, counts = np.unique(arr, return_counts=True)

# Print the results
for value, count in zip(unique_values, counts):
    print(f"{value} occurs {count} times")

Выход

1 occurs 2 times
2 occurs 2 times
3 occurs 2 times
4 occurs 4 times

Используя функцию np.unique(), мы получаем два массива: unique_values, содержащий уникальные элементы, и counts, содержащий соответствующие частоты. Затем мы можем одновременно перебирать эти массивы, используя функцию zip(), и распечатывать результаты.

Способ 2. Использование функции Collections.Counter().

Другой подход к подсчету частоты уникальных значений в массиве NumPy предполагает использование функции Collections.Counter(). Эта функция является частью стандартной библиотеки Python и обеспечивает эффективный способ подсчета вхождений элементов в коллекцию. Вот пример использования этой функции:

import numpy as np
from collections import Counter

# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])

# Count the frequency of unique values
counts = Counter(arr)

# Print the results
for value, count in counts.items():
    print(f"{value} occurs {count} times")

Выход

1 occurs 2 times
2 occurs 2 times
3 occurs 2 times
4 occurs 4 times

Массив NumPy преобразуется в объект, подобный словарю, когда применяется Counter(arr), где ключи обозначают уникальные значения, а значения обозначают соответствующие частоты. Результаты можно затем распечатать после перебора содержимого объекта Counter.

Способ 3: использование функции np.bincount()

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

import numpy as np

# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])

# Get the frequency of unique values
counts = np.bincount(arr)

# Print the results
for value, count in enumerate(counts):
    if count > 0:
        print(f"{value} occurs {count} times")

Выход

1 occurs 2 times
2 occurs 2 times
3 occurs 2 times
4 occurs 4 times

В этом методе мы применяем функцию np.bincount() к массиву NumPy. Результирующий массив counts содержит частоту каждого неотрицательного целого числа, присутствующего в массиве. Затем мы можем перебирать индексы и соответствующие элементы массива counts с помощью функции enumerate() и печатать значения, счетчик которых больше нуля.

Метод 4: использование функции pandas.value_counts()

Если у вас установлена библиотека pandas, вы можете использовать ее функцию value_counts() для подсчета частоты уникальных значений в массиве NumPy. Эта функция возвращает объект Series, содержащий уникальные значения в качестве индексов и соответствующие им частоты в качестве значений. Вот пример:

import numpy as np
import pandas as pd

# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])

# Convert the array to Series
series = pd.Series(arr)

# Get the frequency of unique values
counts = series.value_counts()

# Print the results
for value, count in counts.items():
    print(f"{value} occurs {count} times")

Выход

4 occurs 4 times
1 occurs 2 times
3 occurs 2 times
2 occurs 2 times

Мы можем использовать функцию value_counts() для создания объекта Series, который имеет уникальные значения и сопровождающие их частоты, путем преобразования массива NumPy в серию pandas. Результаты можно распечатать после перебора элементов объекта Series.

Заключение

В этой статье мы рассмотрели различные методы подсчета частоты уникальных значений в массиве NumPy, такие как np.unique(), Collections.Counter(), np.bincount() и pandas.value_counts(). Эти методы предоставляют различные преимущества в зависимости от ваших конкретных требований и доступных библиотек. Применяя эти методы, вы можете эффективно получить представление о своих данных и эффективно провести содержательный анализ.

Статьи по данной тематике: