Функция bincount
Функция bincount подсчитывает количество вхождений каждого неотрицательного целого числа в одномерном массиве. Она принимает на вход массив целых чисел и возвращает массив, где индекс соответствует значению элемента, а значение по индексу - количеству его вхождений. Первым параметром передаётся массив данных, вторым параметром можно указать минимальную длину выходного массива, а третьим - массив весов для взвешенного подсчёта.
Синтаксис
np.bincount(x, [weights=None], [minlength=0])
Пример
Давайте подсчитаем частоту значений в массиве из чисел:
import numpy as np
arr = np.array([0, 1, 1, 2, 2, 2, 3, 4, 4])
res = np.bincount(arr)
print(res)
Результат выполнения кода:
[1 2 3 1 2]
В полученном массиве элемент с индексом 0 равен 1 (значение 0 встретилось один раз), индекс 1 равен 2 (значение 1 встретилось дважды), и так далее.
Пример
Укажем минимальную длину выходного массива с помощью параметра minlength:
import numpy as np
arr = np.array([2, 2, 3, 3, 3])
res = np.bincount(arr, minlength=5)
print(res)
Результат выполнения кода:
[0 0 2 3 0]
Массив содержит частоты для значений от 0 до 4, несмотря на то, что минимальное значение в исходном массиве равно 2.
Пример
Выполним взвешенный подсчёт с использованием параметра weights:
import numpy as np
x = np.array([0, 1, 1, 2, 2])
w = np.array([1.0, 0.5, 0.5, 0.2, 0.8])
res = np.bincount(x, weights=w)
print(res)
Результат выполнения кода:
[1. 1. 1. ]
При взвешенном подсчёте вместо количества вхождений суммируются веса. Значение 0 встретилось один раз с весом 1.0, значение 1 - дважды с весами 0.5 и 0.5, значение 2 - дважды с весами 0.2 и 0.8.
Пример
Используем функцию для подсчёта частот бинарных меток в задаче классификации:
import numpy as np
labels = np.array([0, 1, 0, 0, 1, 1, 1, 0])
class_counts = np.bincount(labels)
print(class_counts)
Результат выполнения кода:
[4 4]
Массив показывает, что оба класса представлены равномерно - по 4 объекта в каждом.
Смотрите также
-
функцию
histogram,
которая строит гистограмму для непрерывных данных -
функцию
count_nonzero,
которая подсчитывает ненулевые элементы в массиве -
функцию
digitize,
которая разбивает данные на интервалы -
функцию
unique,
которая находит уникальные элементы в массиве