Подтвердить что ты не робот

Как вы находите IQR в Numpy?

Есть ли испеченная функция Numpy/Scipy для поиска межквартильного диапазона? Я могу сделать это довольно легко сам, но mean() существует, что в основном sum/len...

def IQR(dist):
    return np.percentile(dist, 75) - np.percentile(dist, 25)
4b9b3361

Ответ 1

np.percentile принимает несколько аргументов процентиля, и вам немного лучше делать:

q75, q25 = np.percentile(x, [75 ,25])
iqr = q75 - q25

или

iqr = np.subtract(*np.percentile(x, [75, 25]))

чем сделать два вызова percentile:

In [8]: x = np.random.rand(1e6)

In [9]: %timeit q75, q25 = np.percentile(x, [75 ,25]); iqr = q75 - q25
10 loops, best of 3: 24.2 ms per loop

In [10]: %timeit iqr = np.subtract(*np.percentile(x, [75, 25]))
10 loops, best of 3: 24.2 ms per loop

In [11]: %timeit iqr = np.percentile(x, 75) - np.percentile(x, 25)
10 loops, best of 3: 33.7 ms per loop

Ответ 2

В scipy.stats теперь есть функция iqr. Он доступен как scipy 0.18.0. Мое первоначальное намерение заключалось в том, чтобы добавить его в numpy, но он считался слишком специфичным для домена.

Вам может быть лучше, просто используя ответ Хайме, поскольку scipy-код просто сложная версия того же самого.