numpy.bincount #

麻木的。bincount ( x , / ,权重= None , minlength = 0 ) #

计算非负整数数组中每个值出现的次数。

bin 的数量(大小为 1)比x中的最大值大 1 。如果指定了minlength,则输出数组中至少会有这个数量的 bin(尽管必要时会更长,具体取决于x的内容)。每个 bin 给出其索引值在x中出现的次数。如果指定了权重,则输入数组将按其加权,即如果n在位置 找到值i,而不是。out[n] += weight[i]out[n] += 1

参数
x array_like,一维,非负整数

输入数组。

权重数组,可选

权重,与x形状相同的数组。

minlength int,可选

输出数组的最小 bin 数。

1.6.0 版本中的新增功能。

返回
输出ndarray 的整数

对输入数组进行装箱的结果。out的长度等于np.amax(x)+1

加薪
值错误

如果输入不是一维的,或者包含负值的元素,或者minlength为负数。

类型错误

如果输入的类型是浮点型或复数型。

也可以看看

histogram, digitize,unique

例子

>>> 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])