dask.array.bincount

dask.array.bincount

dask.array.bincount(x, /, weights=None, minlength=0)[源代码]

此文档字符串是从 numpy.bincount 复制的。

Dask 版本可能存在一些不一致性。

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

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

参数
x类数组,1 维,非负整数

输入数组。

权重类似数组, 可选

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

最小长度int, 可选

输出数组的最小箱数。

1.6.0 新版功能.

返回
int 的 ndarray

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

Raises
ValueError

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

类型错误

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

示例

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