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.
Примеры
>>> 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])