numpy.bincount#

numpy.bincount(x, /, веса=None, minlength=0)#

Подсчитать количество вхождений каждого значения в массиве неотрицательных целых чисел.

Количество бинов (размера 1) на единицу больше максимального значения в x. Если minlength указано, в выходном массиве будет как минимум это количество бинов (хотя оно может быть больше при необходимости, в зависимости от содержимого x). Каждый бин показывает количество вхождений своего индексного значения в x. Если веса указан, входной массив взвешивается им, т.е. если значение n находится в позиции i, out[n] += weight[i] вместо out[n] += 1.

Параметры:
xarray_like, 1 измерение, неотрицательные целые числа

Входной массив.

весаarray_like, необязательный

Веса, массив той же формы, что и x.

minlengthint, необязательный

Минимальное количество бинов для выходного массива.

Возвращает:
выходndarray целых чисел

Результат бинирования входного массива. Длина выход равно np.amax(x)+1.

Вызывает:
ValueError

Если вход не одномерный, или содержит элементы с отрицательными значениями, или если minlength отрицательно.

TypeError

Если тип входных данных — float или complex.

Смотрите также

histogram, digitize, unique

Примеры

>>> import numpy as np
>>> np.bincount(np.arange(5))
array([1, 1, 1, 1, 1])
>>> np.bincount(np.array([0, 1, 1, 3, 2, 1, 7]))
array([1, 3, 1, 1, 0, 0, 0, 1])
>>> x = np.array([0, 1, 1, 3, 2, 1, 7, 23])
>>> np.bincount(x).size == np.amax(x)+1
True

Входной массив должен быть целочисленного типа данных, иначе возникает TypeError:

>>> np.bincount(np.arange(5, dtype=float))
Traceback (most recent call last):
  ...
TypeError: Cannot cast array data from dtype('float64') to dtype('int64')
according to the rule 'safe'

Возможное использование bincount заключается в выполнении сумм по переменным по размеру фрагментам массива, используя weights ключевое слово.

>>> w = np.array([0.3, 0.5, 0.2, 0.7, 1., -0.6]) # weights
>>> x = np.array([0, 1, 1, 2, 2, 2])
>>> np.bincount(x,  weights=w)
array([ 0.3,  0.7,  1.1])