numpy 如何计算给定数组的外部元素的百分位数?

alen0pnh  于 2022-12-29  发布在  其他
关注(0)|答案(2)|浏览(142)

我正在寻找一个百分位函数,它接受一个数组和一个元素,它将返回该元素的最近百分位。
一些例子

percentile([1,2,3,4,5], 2) => 40% 
percentile([1,2,3,4,5], 2.5) => 40% 
percentile([1,2,3,4,5], 6) => 100%

python或numpy中是否存在类似的东西?
numpy做了这个np.percentile(a=[1,2,3,4,5], q=3) => 1.12,这是不希望的。

gdx19jrr

gdx19jrr1#

np.percentile(a, q)告诉你a数组中q的百分位数。这是你想要的反函数。我不认为numpy有一个函数可以做你想做的事情,但是你自己做一个很容易。
百分位数告诉你数组中小于给定元素的元素所占的百分比,所以只要这样做就行了:

def percentile(lst: list, val) -> float:
    return sum(i <= val for i in lst) / len(lst)

如果你有一个numpy数组,你不需要迭代它,因为<=会在数组上广播:
x一个一个一个一个x一个一个二个x

lsmepo6l

lsmepo6l2#

你也可以这样计算:它对数组排序,然后在排序后的数组中找到元素的索引。2然后它通过取元素的索引加1来计算百分位数。

def percentile(arr, element):
    arr = sorted(arr)
    index = arr.index(element)
    percentile = (index + 1) / len(arr) * 100
    return percentile

相关问题