scipy.stats.

rankdata#

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

为数据分配排名,并适当处理并列情况。

默认情况下 (axis=None),数据数组首先被展平,并返回一个平坦的排名数组。如果需要,可以单独将排名数组重塑为数据数组的形状(请参见示例)。

排名从 1 开始。method 参数控制如何为相等的值分配排名。有关排名方法的进一步讨论,请参阅 [1]

参数:
aarray_like

要排名的值数组。

method{‘average’, ‘min’, ‘max’, ‘dense’, ‘ordinal’}, 可选

用于为并列元素分配排名的方法。以下方法可用(默认为“average”)

  • “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。

在 1.10 版本中添加。

返回:
ranksndarray

一个大小等于 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])