iqr#
- scipy.stats.iqr(x, axis=None, rng=(25, 75), scale=1.0, nan_policy='propagate', interpolation='linear', keepdims=False)[源代码]#
计算沿指定轴的数据的四分位间距。
四分位间距 (IQR) 是数据第 75 个百分位和第 25 个百分位之间的差。它是一种衡量类似于标准差或方差的离散的度量,但对异常值具有更强的鲁棒性 [2]。
rng
参数允许此函数计算实际 IQR 以外的其他百分位数范围。例如,设置rng=(0, 100)
等效于numpy.ptp
。空数组的 IQR 为 np.nan。
0.18.0 版中添加。
- 参数:
- xarray_like
输入数组或可转换为数组的对象。
- axisint or None, default: None
如果为 int,则沿着此轴计算统计信息的输入的轴。输入的每个轴切片(例如行)的统计信息将出现在输出的相应元素中。如果为
None
,则在计算统计信息之前会将输入展平。- rng包含 [0,100] 范围内的浮点数的两元素序列,可选
计算范围内的百分位数。每个值必须在 0 到 100(含)之间。默认值为真正的 IQR:
(25, 75)
。元素的顺序并不重要。- scale标量或字符串或实际数值的 array_like,可选
scale 的数值将除以最终结果。还认可以下字符串值
‘normal’ : 按照 \(2 \sqrt{2} erf^{-1}(\frac{1}{2}) \approx 1.349\) 进行缩放。
默认值为 1.0。实数数据类型数组 scale 也是允许的,只要它广播到输出正确,以便
out / scale
为有效运算。输出尺寸取决于输入数组 x、axis 参数和 keepdims 标志。- nan_policy{‘propagate’, ‘omit’, ‘raise’}
定义如何处理输入 NaN。
propagate
:如果在计算统计信息的轴切片(例如行)中存在 NaN,则输出的相应条目将为 NaN。omit
:在执行计算时将省略 NaN。如果计算统计信息的轴切片中剩余的数据不足,则输出的相应条目将为 NaN。raise
:如果存在 NaN,则将引发ValueError
。
- interpolationstr,可选
当百分位边界位于两个数据点
i
和j
之间时,指定要使用的插值方法。以下选项可用(默认值为“linear”)“linear”:
i + (j - i)*fraction
,其中fraction
是被i
和j
包围的索引的小数部分。“lower”:
i
。“higher”:
j
。“nearest”:
i
或j
,以最接近的一个为准。“midpoint”:
(i + j)/2
。
对于 NumPy >= 1.22.0,
numpy.percentile
的method
关键字提供的附加选项也是有效的。- keepdims布尔值,默认值:False
如果将其设置为 True,则被约简的轴将作为大小为 1 的维度保留在结果中。使用此选项,结果将针对输入数组正确广播。
- 返回:
- iqr标量或 ndarray
如果
axis=None
,则返回一个标量。如果输入包含精度低于np.float64
的整数或浮点数,则输出数据类型为np.float64
。否则,输出数据类型与输入数据类型相同。
注释
SciPy 1.9 中新增,
np.matrix
输入(不建议用于新代码)在进行计算前已转换为np.ndarray
。在这种情况下,输出将是标量或形状合适的np.ndarray
,而不是二维np.matrix
。类似地,虽然会忽略掩码数组的掩码元素,但输出将是标量或np.ndarray
,而不是掩码为mask=False
的掩码数组。参考
示例
>>> import numpy as np >>> from scipy.stats import iqr >>> x = np.array([[10, 7, 4], [3, 2, 1]]) >>> x array([[10, 7, 4], [ 3, 2, 1]]) >>> iqr(x) 4.0 >>> iqr(x, axis=0) array([ 3.5, 2.5, 1.5]) >>> iqr(x, axis=1) array([ 3., 1.]) >>> iqr(x, axis=1, keepdims=True) array([[ 3.], [ 1.]])