scipy.stats.iqr似乎不遵循Wikipedia中记录的递归算法。取而代之的是,它只是简单地做到了
np.percentile(x, 75)- np.percentile(x, 25)这并不排除中位数,而是包含在内,因此您得到
(32 + 33)/2 - (25 + 28)/2 = 6
如果要在Wikipedia中使用该算法,则需要执行以下操作:
def iqr_(m): m = np.array(m) n = m.size//2 m_ = np.partition(m.ravel(), n + 1) return np.median(m_[n + m.size%2:]) - np.median(m_[:n])iqr_([23,25,28,28,32,33,35])8.0
编辑:在Wikipedia的讨论页面上,提出的算法不是确定的,实际上的方法
scipy.stats.iqr也是可以接受的。请参阅确定四分位数三种方法在这里



