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