scipy.stats.

rankdata#

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

为数据分配等级,适当处理并列情况。

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

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

参数:
aarray_like

要排序的值数组。

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

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

  • ‘average’: 分配给每个值的排名是所有并列值应分配的排名的平均值。

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

  • ‘max’: 分配给所有并列值的最大排名将被分配给每个值。

  • ‘dense’: 类似于 ‘min’,但下一个最高元素的排名被分配为紧随那些分配给并列元素之后的排名。

  • ‘ordinal’: 所有值都被赋予一个独特的排名,对应于这些值在 a 中出现的顺序。

{None, int}, 可选

执行排名的轴。如果为 None,数据数组首先会被展平。

nan_policy{‘propagate’, ‘omit’, ‘raise’}, 可选

定义当输入包含 nan 时的处理方式。以下选项可用(默认是 ‘propagate’):

  • ‘propagate’: 在排名计算中传播 nans

  • ‘omit’: 执行计算时忽略 nan 值

  • ‘raise’: 引发一个错误

备注

nan_policy 为 ‘propagate’ 时,输出是一个包含 所有 nan 的数组,因为输入中 nan 的相对排名是未定义的。当 nan_policy 为 ‘omit’ 时,在排名其他值时忽略 a 中的 nan,并且输出的相应位置为 nan。

Added in version 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])