numpy.bincount使用

来源:互联网 发布:淘宝关键词数量 编辑:程序博客网 时间:2024/05/17 07:51

它大致说bin的数量比x中的最大值大1,每个bin给出了它的索引值在x中出现的次数。下面,我举个例子让大家更好的理解一下:

# 我们可以看到x中最大的数为7,因此bin的数量为8,那么它的索引值为0->7x = np.array([0, 1, 1, 3, 2, 1, 7])# 索引0出现了1次,索引1出现了3次......索引5出现了0次......np.bincount(x)#因此,输出结果为:array([1, 3, 1, 1, 0, 0, 0, 1])# 我们可以看到x中最大的数为7,因此bin的数量为8,那么它的索引值为0->7x = np.array([7, 6, 2, 1, 4])# 索引0出现了0次,索引1出现了1次......索引5出现了0次......np.bincount(x)#输出结果为:array([0, 1, 1, 0, 1, 0, 1, 1])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

下面,我来解释一下weights这个参数。文档说,如果weights参数被指定,那么x会被它加权,也就是说,如果值n发现在位置i,那么out[n] += weight[i]而不是out[n] += 1.因此,我们weights的大小必须与x相同,否则报错。下面,我举个例子让大家更好的理解一下:

w = np.array([0.3, 0.5, 0.2, 0.7, 1., -0.6])# 我们可以看到x中最大的数为4,因此bin的数量为5,那么它的索引值为0->4x = np.array([2, 1, 3, 4, 4, 3])# 索引0 -> 0# 索引1 -> w[1] = 0.5# 索引2 -> w[0] = 0.3# 索引3 -> w[2] + w[5] = 0.2 - 0.6 = -0.4# 索引4 -> w[3] + w[4] = 0.7 + 1 = 1.7np.bincount(x,  weights=w)# 因此,输出结果为:array([ 0. ,  0.5,  0.3, -0.4,  1.7])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

最后,我们来看一下minlength这个参数。文档说,如果minlength被指定,那么输出数组中bin的数量至少为它指定的数(如果必要的话,bin的数量会更大,这取决于x)。下面,我举个例子让大家更好的理解一下:

# 我们可以看到x中最大的数为3,因此bin的数量为4,那么它的索引值为0->3x = np.array([3, 2, 1, 3, 1])# 本来bin的数量为4,现在我们指定了参数为7,因此现在bin的数量为7,所以现在它的索引值为0->6np.bincount(x, minlength=7)# 因此,输出结果为:array([0, 2, 1, 2, 0, 0, 0])# 我们可以看到x中最大的数为3,因此bin的数量为4,那么它的索引值为0->3x = np.array([3, 2, 1, 3, 1])# 本来bin的数量为4,现在我们指定了参数为1,那么它指定的数量小于原本的数量,因此这个参数失去了作用,索引值还是0->3np.bincount(x, minlength=1)# 因此,输出结果为:array([0, 2, 1, 2])
原创粉丝点击