查找 numpy 数组中每个数据点的百分位数

Finding percentile for each data point in a numpy array

我有下面一行代码:

threshold_value = numpy.percentile(a, q)

其中 a 是我的数据,q 设置为 95 让我们说。

假设我将 q 更改为 90,我将得到不同的阈值。

那么对于 a 中的每个数据点,我想计算 q 的什么值会产生 threshold_value 等于 a。所以我感兴趣的可能是 a 中的一个数据点低于 threshold_value,但我想要一个百分位数值来查看它的确切位置。当我有一个测试数据集时,我将每个值与阈值进行比较,看它是否超过阈值。所以我不想给出一个q值,我想被告知一个数据点的q值是多少。

所以我可能需要函数 a_percentile = function(a),其中 a_percentile 是原始数据值到百分位数的转换。

使用scipy.stats.percentileofscore https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.percentileofscore.html:

import numpy as np
from scipy.stats import percentileofscore
a = np.linspace(0, 10, 10)
[percentileofscore(a, i, kind='strict') for i in a]

输出:

[0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0]