Numpy средний диапазон процентилей, например Среднее (от 25 до 50 процентиль)? - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу вычислить среднее значение между двумя диапазонами процентилей, например, между 25-м и 50-м процентилем.

Обычно я использую np.percentile для вычисления конкретных c значений процентили.

Любой идея, как рассчитать среднее (25-50)? Можно ли вычесть?

mean(25-50) = np.percentile(array,50) - np.percentile(array,25)
``

1 Ответ

1 голос
/ 24 апреля 2020

Вы не можете просто вычесть два значения в разных процентилях.

Чтобы найти среднее значение элементов между 25-м и 50-м процентилем, вам нужно найти сумму всех этих элементов и разделить ее на size.

Чтобы найти сумму элементов, упомянутых выше, вы можете вычесть сумму элементов 0-25-го процентиля из суммы 0-50-го процентиля.

Получив сумму разностей , просто разделите его на размер этих элементов.

# find the indexes of the element below 25th and 50th percentile
idx_under_25 = np.argwhere(array <= np.percentile(array, 25)).ravel()
idx_under_50 = np.argwhere(array <= np.percentile(array, 50)).ravel()

# find the number of the elements in between 25th and 50th percentile
diff_num = len(idx_under_50) - len(idx_under_25)

# find the sum difference
diff_sum = np.sum(np.take(array, idx_50)) - np.sum(np.take(array, idx_25))

# get the mean
mean = diff_sum / diff_num
...