📅  最后修改于: 2023-12-03 15:19:25.592000             🧑  作者: Mango
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()
函数的使用也有一些注意点:
只能计算非负整数,如果数组中出现了负数,会报错。
可以处理空数组,此时返回一个空数组。
如果权重数组与数据数组长度不一致,会报错。
可以处理复数,实部和虚部会统计在两个独立的数组中。