2017-08-14 20 views
0

我有一個包含N個(正)點的陣列。我想找到一個直方圖的M bin邊,這樣所有的條都有相同的高度。換句話說,我想找到M + 1個點,這樣兩個連續的邊框邊之間的陣列點的計數是相同的。將N個點放入M個等分箱

>>> array = [0.3 0.3 0.3 0.7 0.8 0.9] 
>>> M = 2 
>>> binPartition(array, M) 
[0, 0.5, 1] 

我希望在Python和numpy的一個答案,但一個鏈接到一個已知的算法就足夠了!謝謝! :)

+0

來自用戶的代碼寫入請求幾乎3K代表? –

+0

@EugeneSh。一個鏈接到algortithm本來就足夠了:) – Ant

+1

你應該知道那也是OT以及 –

回答

1

比用percentile做到:

import numpy as np 

def binPartition(array, M): 
    return np.percentile(array, np.linspace(0, 100, M + 1)) 

binPartition([0.3, 0.3, 0.3, 0.7, 0.8, 0.9], 2) 
>>> array([ 0.3, 0.5, 0.9]) 
+0

謝謝。我必須有一個大腦放屁,我要求的百分位功能:D – Ant

相關問題