2017-03-16 29 views
1

我試圖計算四分位數使用numpy在python值的陣列。np.percentile不等於四分位數

X = [1, 1, 1, 3, 4, 5, 5, 7, 8, 9, 10, 1000] 

我會做到以下幾點:

quartiles = np.percentile(X, range(0, 100, 25)) 
quartiles 
# array([1. , 2.5 , 5. , 8.25]) 

但是,這是不正確,因爲第一和第三四分位數應分別爲2和8.5。

這可以顯示如下:

Q1 = np.median(X[:len(X)/2]) 
Q3 = np.median(X[len(X):]) 
Q1, Q3 
# (2.0, 8.5) 

我不能讓我的頭一輪是什麼np.percentile是做給了不同的答案。任何燈光流露在此,我都會非常感激。

回答

2

沒有對錯之分,但計算百分位數的百分比是在連續的情況下一個明確的概念,只是方式不同,沒有那麼對於離散樣本:不同的方法不會有所作爲的一個非常大的若干意見(與重複次數相比),但實際上對於小樣本可能很重要,因此您需要弄清楚哪些情況更符合實際情況。

爲了得到你想要的輸出,你應該在百分功能指定插值=「中點」:

quartiles = np.percentile(X, range(0, 100, 25), interpolation = 'midpoint') 
quartiles # array([ 1. , 2. , 5. , 8.5]) 

我建議你看看在文檔http://docs.scipy.org/doc/numpy/reference/generated/numpy.percentile.html