會注意到
Numpy.bincount()這個函數,其實是在閱讀機器學習的程式碼裡常常出現。常用來
處理類別標籤的向量。它是內建在Python Numpy裡。原文的解釋其實有點難懂,故我把我的心得
記下來,發現它原始設計的概念就是類似桶子排序法的基本概念,是一個很有趣的函數,所以也
特別用它實作一簡單的桶子排序。
理解Numpy.bincount()
numpy.bincount(x, weights=None, minlength=None)
1.假設輸入X=[0,1,2,2,3,4,4],那麼產生bins(桶子)的數量為該X最大值4
再加1=5,於是我們產生了5個bins(桶子)的排序編號為indx0~indx4,
可以視為一向量[indx0,indx1,indx2,indx3,indx4]
2.接著來看如何放原本的資料到這5的桶子(bins,分別indx0~indx4)
原本的輸入X=[0,1,2,2,3,4,4]裡有"
一個"資料
0,表示要放到
indx0桶子的只有
一個,
故indx0=1。
接著,原本的輸入X=[0,1,2,2,3,4,4]裡有"
一個"資料
1,表示要放到
indx1桶子的只有
一個,故indx1=1。
接著,原本的輸入X=[0,1,2,2,3,4,4]裡有"
兩個"資料
2,表示要放到
indx2桶子的有
兩個,故indx1=2。
依序放完所以桶子,indx3及 indx4桶子,可以得到indx3=1,indx4=2
故得到輸出結果為[1,1,2,1,2]即:[indx0=1,indx1=1,indx2=2,indx3=1,indx4=2]
使用Python語言程式如下:
EX1:
import numpy as np
X=[0,1,2,2,3,4,4]
print(np.bincount(X))
結果是:[1,1,2,1,2]
EX2:
import numpy as np
X=[0,5,3,2,3,1,4,2,4]
print(np.bincount(X))
結果是:[1,1,2,2,2,1]
注意:輸入的X數值不可以為負,否則報錯
若有實數值,實際測試會被無條件捨去後當整數使用