Как подсчитать частоту уникальных значений в массиве 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(). Эти методы предоставляют различные преимущества в зависимости от ваших конкретных требований и доступных библиотек. Применяя эти методы, вы можете эффективно получить представление о своих данных и эффективно провести содержательный анализ.