Nick T - 1 year ago 588
Python Question

# How do you find the IQR in Numpy?

Is there a baked-in Numpy/Scipy function to find the interquartile range? I can do it pretty easily myself, but

`mean()`
exists which is basically
`sum/len`
...

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

`np.percentile` takes multiple percentile arguments, and you are slightly better off doing:

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

or

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

than making two calls to `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
``````
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download