scipy.stats.
rankdata#
- scipy.stats.rankdata(a, method='average', *, axis=None, nan_policy='propagate')[source]#
分配秩给数据,适当处理平局问题。
默认情况下(
axis=None
),数据数组首先被压平,返回平秩数组。如果需要,请分别将秩数组重新塑形为数据数组的形状(参见示例)。秩从 1 开始。method 参数控制如何将秩分配给相同的值。有关排名方法的进一步讨论,请参见 [1] 。
- 参数:
- aarray_like
待排序的值数组。
- method{‘average’, ‘min’, ‘max’, ‘dense’, ‘ordinal’}, optional
用于分配秩给相等元素的方法。可以使用以下方法(默认为“平均”)
‘average’: 将分配给所有绑定值的秩的平均值分配给每个值。
‘min’: 将分配给所有绑定值的秩的最小值分配给每个值。(这也称为“竞赛”排名。)
‘max’: 将分配给所有绑定值的秩的最大值分配给每个值。
‘dense’:类似于‘min’,但是将最高元素的等级指定为紧靠与并列元素指定的等级之后。
‘ordinal’:所有值都被赋予一个明确的等级,该等级对应于这些值在a 中出现的顺序。
- axis{None, int},可选
执行等级时所在的轴。如果
None
,则数据数组会首先展开。- nan_policy{‘propagate’,‘omit’,‘raise’,可选}
定义当输入包含 nan 时如何处理。可以选择以下选项(默认为‘propagate’)
‘propagate’:通过等级计算传播 nan
‘omit’:在计算时忽略 nan 值
‘raise’:引发错误
注意
当nan_policy 为‘propagate’时,输出是所有 nan 的数组,这是因为输入中相对于 nan 的等级是未定义的。当nan_policy 为‘omit’时,对a 中的 nan 进行等级排序时,则忽略 nan,而输出的对应位置变为 nan。
已添加至 1.10 版。
- 返回:
- 等级ndarray
一个大小等于a 大小的数组,包含等级得分。
参考
示例
>>> import numpy as np >>> from scipy.stats import rankdata >>> rankdata([0, 2, 3, 2]) array([ 1. , 2.5, 4. , 2.5]) >>> rankdata([0, 2, 3, 2], method='min') array([ 1, 2, 4, 2]) >>> rankdata([0, 2, 3, 2], method='max') array([ 1, 3, 4, 3]) >>> rankdata([0, 2, 3, 2], method='dense') array([ 1, 2, 3, 2]) >>> rankdata([0, 2, 3, 2], method='ordinal') array([ 1, 2, 4, 3]) >>> rankdata([[0, 2], [3, 2]]).reshape(2,2) array([[1. , 2.5], [4. , 2.5]]) >>> rankdata([[0, 2, 2], [3, 2, 5]], axis=1) array([[1. , 2.5, 2.5], [2. , 1. , 3. ]]) >>> rankdata([0, 2, 3, np.nan, -2, np.nan], nan_policy="propagate") array([nan, nan, nan, nan, nan, nan]) >>> rankdata([0, 2, 3, np.nan, -2, np.nan], nan_policy="omit") array([ 2., 3., 4., nan, 1., nan])