scipy.stats.

percentileofscore#

scipy.stats.percentileofscore(a, score, kind='rank', nan_policy='propagate')[源代码]#

计算相对于分数列表的分数的百分位数排名。

例如,percentileofscore 为 80% 表示 a 中 80% 的分数低于给定分数。在存在间隙或并列的情况下,确切的定义取决于可选关键字 kind

参数:
aarray_like

用于与 score 进行比较的一维数组。

scorearray_like

用于计算百分位数的分数。

kind{‘rank’, ‘weak’, ‘strict’, ‘mean’}, 可选

指定结果分数的解释。以下选项可用(默认为 ‘rank’)

  • ‘rank’:分数的平均百分比排名。如果有多个匹配项,则对所有匹配分数的百分比排名进行平均。

  • ‘weak’:这种类型对应于累积分布函数的定义。百分位数排名为 80% 表示 80% 的值小于或等于提供的分数。

  • ‘strict’:类似于“weak”,只是只计算严格小于给定值的值。

  • ‘mean’: “weak” 和 “strict” 分数的平均值,通常用于测试。请参阅 https://en.wikipedia.org/wiki/Percentile_rank

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

指定如何处理 a 中的 nan 值。以下选项可用(默认为 ‘propagate’)

  • ‘propagate’:返回 nan(对于 score 中的每个值)。

  • ‘raise’:抛出错误

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

返回:
pcosfloat

相对于 a 的分数百分位位置 (0-100)。

示例

四分之三的给定值低于给定分数

>>> import numpy as np
>>> from scipy import stats
>>> stats.percentileofscore([1, 2, 3, 4], 3)
75.0

在存在多个匹配项时,请注意两个匹配项(分别为 0.6 和 0.8)的分数是如何平均的

>>> stats.percentileofscore([1, 2, 3, 3, 4], 3)
70.0

只有 2/5 的值严格小于 3

>>> stats.percentileofscore([1, 2, 3, 3, 4], 3, kind='strict')
40.0

但是 4/5 的值小于或等于 3

>>> stats.percentileofscore([1, 2, 3, 3, 4], 3, kind='weak')
80.0

weak 和 strict 分数的平均值是

>>> stats.percentileofscore([1, 2, 3, 3, 4], 3, kind='mean')
60.0

支持分数数组(任何维度)

>>> stats.percentileofscore([1, 2, 3, 3, 4], [2, 3])
array([40., 70.])

输入可以是无穷大

>>> stats.percentileofscore([-np.inf, 0, 1, np.inf], [1, 2, np.inf])
array([75., 75., 100.])

如果 a 为空,则生成的百分位数均为 nan

>>> stats.percentileofscore([], [1, 2])
array([nan, nan])