bincount的用途很简单,就是统计出一个列表的各个元素的出现次数。
例如输入是:[1,0,2,2,1,2,3,5]
那么输出就是:[1,2,3,1,0,1]
这样的结果可能并不是很直观,可能依然会有同学会问为什么会输出这样的结果。
我们看看:假如我们把输入的列表中的数字都统计一遍,形成一个字典:
key是列表的数字,value是数字对应出现的次数:
{
0:1,
1:2,
2:3,
3:1,
4:0,
5:1
}
所以这就很直观啦,但是又有同学要问了,输入明明没有4啊,为什么也要统计4呢?因为这就是bincount的特性,例如如果一个列表中最大的数字是5的话,那么输出的列表就有6个(5+1)元素,因为要统计0~5数字的出现频率。
说白了 bincount就是统计列表中数字对应的出现频率的。
那有什么用呢?
对于我而言,我一般用来看一个矩阵中的值是否符合我的预期。如果一个矩阵太大,是打印不出来的,调试时看也很不方便,于是,用bincount就可以输出,矩阵中的数字的出现频率,进而知道矩阵中的值的取值范围是不是符合我的预期。当然,二维三维的输入数据要做一个reshape处理,把它转成一维向量,如:
import numpy as np
img = cv2.imread(path)
print(np.bincount(img.reshape(-1)))