scipy.stats.rankdata

scipy.stats.rankdata(a, method='average', *, axis=None)[源代码]

给数据分配等级,适当地处理关系。

默认情况下, (axis=None ),则首先平坦化数据数组,并返回平坦的秩数组。如果需要,请将秩数组单独重塑为数据数组的形状(请参见示例)。

排名从1开始。 method 参数控制如何将等级分配给相等的值。看见 [1] 以进一步讨论排名方法。

参数
aarray_like

要排序的值数组。

method{‘平均值’,‘最小值’,‘最大值’,‘密集’,‘序号’},可选

用于将等级分配给平局元素的方法。有以下方法可用(默认值为“Average”):

  • “平均值”:将分配给所有并列数值的平均排名分配给每个数值。

  • ‘min’:将分配给所有并列数值的最低等级分配给每个数值。(这也称为“竞争”排名。)

  • ‘max’:将分配给所有平局值的最大等级分配给每个值。

  • “密集”:类似于“min”,但下一个最高元素的排名紧跟在分配给绑定元素的排名之后。

  • ‘序数’:所有值都被赋予不同的等级,与值出现的顺序相对应 a

axis{无,int},可选

要沿其执行排名的轴。如果 None ,则首先展平数据阵列。

退货
ranksndarray

大小等于 a ,包含等级分数。

参考文献

1

“排名”,https://en.wikipedia.org/wiki/Ranking

示例

>>> 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. ]])