在 Numpy 中,如何获得相当于 arr 百分位数但包括负数的值?

In Numpy, how can I obtain an equivalent to an arr percentile, but including negative numbers?

我找不到更好的标题了。让我解释一下:

Numpy 有 percentile() 函数,它计算任何数组的第 N 个百分位数:

import numpy as np

arr = np.arange(0, 10)

print(arr)
print(np.percentile(arr, 80))

>>> [0 1 2 3 4 5 6 7 8 9]
>>> 7.2

太棒了 - 7.2 标志着该数组的第 80 个百分位数。

如何获得相同的百分位数类型的计算,但找出数组两端(正数和负数)的第 N 个百分位数?

比如我的数组可能是:

[-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9]

所以我将它们放在一条数轴上,从 -10 到 10。我想获得标记该数轴末端的第 N 个百分位数。例如,对于第 90 个百分位数,输出可能类似于 -8.1 和 7.5,因为数组中 90% 的值落在该范围内,其余 10% 低于 -8.1 或大于 7.5。

这些数字当然是我编造的,只是为了说明我要计算的内容。

有没有NumPy方法获取这样的边界?

如果我可以进一步解释或澄清,请告诉我,我知道这是一个复杂的问题,我正在尽力弄清楚。非常感谢!

你在寻找类似

的东西吗
import numpy as np

def extremities(array, pct):
    # assert 50 <= pct <= 100
    return np.percentile(array, [100 - pct, pct])

arr = np.arange(-10, 10)
print(extremities(arr, 90)) # [-8.1, 7.1]