При анализе данных и научных вычислениях Numpy — это мощная библиотека Python, обеспечивающая эффективные числовые операции с массивами и матрицами. Одной из распространенных задач является определение количества уникальных значений в массиве Numpy. В этой статье мы рассмотрим различные методы решения этой задачи, используя простой язык и практические примеры кода.
Методы подсчета уникальных значений:
-
Использование np.unique():
Функция np.unique() возвращает массив уникальных элементов во входном массиве и соответствующие им счетчики. Мы можем использовать это для подсчета уникальных значений в массиве Numpy.import numpy as np arr = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4]) unique_values, counts = np.unique(arr, return_counts=True) print(unique_values) # [1 2 3 4] print(counts) # [1 2 3 4] -
Использование np.bincount():
Функция np.bincount() подсчитывает вхождения каждого неотрицательного целочисленного значения в массиве. Преобразовав массив Numpy в целые числа, мы можем использовать np.bincount() для подсчета уникальных значений.arr = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4]) unique_values, counts = np.unique(arr.astype(int), return_counts=True) print(unique_values) # [1 2 3 4] print(counts) # [1 2 3 4] -
Использование коллекций.Counter:
Модуль коллекций в Python предоставляет класс Counter, который может подсчитывать вхождения элементов в итерацию. Мы можем преобразовать массив Numpy в список Python, а затем использовать Collections.Counter для подсчета уникальных значений.from collections import Counter arr = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4]) unique_values, counts = zip(*Counter(arr.tolist()).items()) print(unique_values) # (1, 2, 3, 4) print(counts) # (1, 2, 3, 4) -
Использование np.histogram():
Функция np.histogram() создает гистограмму, вычисляя вхождение значений в указанные интервалы. Мы можем извлечь количество ячеек, чтобы получить количество уникальных значений.arr = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4]) counts, bins = np.histogram(arr, bins=np.arange(np.min(arr), np.max(arr)+2)) print(bins[:-1]) # [1 2 3 4] print(counts) # [1 2 3 4]