你怎么在Numpy找到IQR?

Nic*_*k T 57 python numpy

是否有烘焙Numpy/Scipy函数来查找四分位数范围?我自己可以很容易地做到这一点,但mean()存在基本上sum/len......

def IQR(dist):
    return np.percentile(dist, 75) - np.percentile(dist, 25)
Run Code Online (Sandbox Code Playgroud)

Jai*_*ime 91

np.percentile 需要多个百分位参数,你做得稍微好一点:

q75, q25 = np.percentile(x, [75 ,25])
iqr = q75 - q25
Run Code Online (Sandbox Code Playgroud)

要么

iqr = np.subtract(*np.percentile(x, [75, 25]))
Run Code Online (Sandbox Code Playgroud)

打两个电话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
Run Code Online (Sandbox Code Playgroud)

  • 它在它之后解压缩元组,因此该函数不是两个项目序列,而是传递两个单独的项目. (2认同)

Mad*_*ist 19

现在有一个iqr功能scipy.stats.它从scipy 0.18.0开始提供.我最初的意图是将它添加到numpy,但它被认为是特定于域的.

你可能最好只使用Jaime的答案,因为scipy代码只是一个过于复杂的版本.

  • 为什么IQR被认为是针对numpy的特定领域? (2认同)