NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中bincount方法的使用。

numpy.bincount

numpy.bincount(x, weights=None, minlength=0)

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

bins数(大小为1)比x中的最大值大1。如果指定了minlength,则输出数组中至少有此bin数量(尽管如果需要,它会更长一些,具体取决于x的内容)。每个bin均以x表示其索引值的出现次数。如果指定了权重,则对输入数组进行加权,即,如果在位置i处找到值n,则out [n] += weight[i]而不是out[n] += 1

参数 :

x :array_like, 1 dimension, nonnegative ints

输入数组。

weights :array_like, 可选

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

minlength :int, 可选

输出阵列的最小bins数。 1.6.0版中的新功能。

返回值 :

out :ndarray of ints

合并输入数组的结果。 out的长度等于np.amax(x)+1

Raises :

ValueError

如果输入不是一维的,

或者包含具有负值的元素,或者minlength为负。

TypeError

输入的类型是float还是complex。

例子

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

输入数组必须为整数dtype,否则将引发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])

推荐文档

相关文档

大家感兴趣的内容

随机列表