📜  Python中的 numpy.bincount()(1)

📅  最后修改于: 2023-12-03 15:19:25.592000             🧑  作者: Mango

Python中的 numpy.bincount()

numpy.bincount()是numpy库中的一个函数,用于对数据进行计数统计。它可以统计数组中每个元素的出现次数,然后返回一个数组,数组的第i个元素表示i在原数组中出现的次数。

简单示例

下面是一个简单的例子,演示如何使用numpy.bincount()函数统计一个数组中各元素出现的次数。

import numpy as np

arr = np.array([0, 1, 1, 3, 2, 1, 7, 3])
result = np.bincount(arr)
print(result)

运行结果如下:

[1 3 1 2 0 0 0 1]

这个结果表示原数组中,0出现了1次,1出现了3次,2出现了1次,3出现了2次,7出现了1次。可以看到,numpy.bincount()将原数组中的每个元素值作为了索引,然后返回了对应的元素出现次数。

参数说明

numpy.bincount()函数有以下常用参数:

  • x:要进行计数的数组。
  • weights:表示每个元素的权重。
  • minlength:输出数组的最小长度。

其中,x是必选参数。如果只传入x参数,则表示统计x中各元素出现的次数。如果此时x中出现了负数,则会报错,因为numpy.bincount()默认只能处理非负整数。

arr = np.array([1, 1, 3, 2, 1, 7, 3])
result = np.bincount(arr)
print(result)

输出结果如下:

[0 3 1 2 0 0 0 1]

如果需要统计x中每个元素与一个权重相关的计数,则可以传入weights参数。这个参数需要是与x等长的数组。例如:

arr = np.array([1, 1, 3, 2, 1, 7, 3])
weights = np.array([0.2, 0.3, 0.1, 1.1, 1, 0.8, 0.5])
result = np.bincount(arr, weights=weights)
print(result)

输出结果如下:

[0.  1.2 0.1 2.3 0.  0.  0.  0.5]

上面的结果中,第1个元素的计数为0,因为没有0出现在原数组中;第2个元素的计数为1.2,表示原数组中1出现了3次,并且每次的权重分别为0.2、0.3和1.0,所以总计数为1.2。

最后一个可选参数是minlength,表示输出数组的最小长度。如果设为10,就表示输出的数组至少有10个元素,不足10个时会自动补0。例如:

arr = np.array([1, 1, 3, 2, 1, 100])
result = np.bincount(arr, minlength=10)
print(result)

输出结果如下:

[0 3 1 2 0 0 0 0 0 0 1]
注意点

numpy.bincount()函数的使用也有一些注意点:

  1. 只能计算非负整数,如果数组中出现了负数,会报错。

  2. 可以处理空数组,此时返回一个空数组。

  3. 如果权重数组与数据数组长度不一致,会报错。

  4. 可以处理复数,实部和虚部会统计在两个独立的数组中。