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
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…