Я пытаюсь вычислить процентиль после прочтения википедии я реализовал простую формулупитон: NumPy - вычислить процентиль с линейной интерполяцией
def _percentile(numList, percentile):
numList.sort()
n = int(round(percentile * len(numList) + 0.5))
if n > 1:
return numList[n-2]
else:
return 0
Но то, что я хочу сделать, это версия интерполяции упоминается в вики: (http://en.wikipedia.org/wiki/Percentile#Linear_interpolation_between_closest_ranks) Я ищу в google и нашел numpy, но я не думаю, что получаю правильное значение, когда использую его даже для простой формулы. И когда я пытаюсь передать значение для интерполяции, это дает мне ошибку. (http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.percentile.html)
позволяет начинается со следующим списком:
B = [15, 20, 35, 40, 50]
по моему методу: Я получаю фактическое значение исходного списка, которые представляют процентиль, что я ищу:
>>> print percentile(B, P=0.)
0
>>> print percentile(B, P=0.1)
0
>>> print percentile(B, P=0.2)
15
>>> print percentile(B, P=0.3)
15
>>> print percentile(B, P=0.4)
20
>>> print percentile(B, P=0.5)
20
>>> print percentile(B, P=0.6)
35
>>> print percentile(B, P=0.7)
35
>>> print percentile(B, P=0.8)
40
>>> print percentile(B, P=0.9)
40
>>> print percentile(B, P=0.95)
40
>>> print percentile(B, P=1.0)
50
Но если я использую numpy, я не получаю фактическое значение, которое представляет собой исходный список.
>>> np.percentile(B, 0.1)
15.02
>>> np.percentile(B, 0.2)
15.039999999999999
>>> np.percentile(B, 0.3)
15.06
>>> np.percentile(B, 0.4)
15.08
>>> np.percentile(B, 0.5)
15.1
>>> np.percentile(B, 0.6)
15.120000000000001
>>> np.percentile(B, 0.7)
15.140000000000001
>>> np.percentile(B, 0.8)
15.16
>>> np.percentile(B, 0.9)
15.18
>>> np.percentile(B, 1)
15.199999999999999
>>> np.percentile(B, 10)
17.0
>>> np.percentile(B, 20)
19.0
>>> np.percentile(B, 30)
23.0
>>> np.percentile(B, 40)
29.0
>>> np.percentile(B, 50)
35.0
Мой вопрос задается массивом, как я могу получить значение из этого массива, которые представляют процентили, такие как 10, 20 ... 100 с использованием линейной интерполяции метода для расчета процентиля?