Art*_*Sbr 14 python numpy quantile
我看到很多类似 R 的问题,但我找不到专门针对 Python 的问题,最好使用 numpy。
假设我有一组观察结果存储在x
. q * 100
我可以获得人口累计百分比的值。
# Import numpy
import numpy as np
# Get 75th percentile
np.quantile(a=x, q=0.75)
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有一个函数可以实现相反的功能。也就是说,一个 numpy 函数将一个值作为输入并返回q
。
为了进一步扩展这一点,scipy 分发对象有一个ppf
方法可以让我做到这一点。我正在寻找 numpy 中类似的东西。它存在吗?
loo*_*alt 18
不是一个现成的函数,而是一个紧凑且相当快速的片段:
(a<value).mean()
Run Code Online (Sandbox Code Playgroud)
您可以(至少在我的机器上)通过使用来获得更好的性能np.count_nonzero
np.count_nonzero(a<value) / a.size
Run Code Online (Sandbox Code Playgroud)
但说实话我什至都懒得理会。
有一个方便的函数可以做到这一点。请注意,这不是精确的逆,因为quantile
/percentile
函数不精确。给定有限的观察数组,百分位数将具有离散值;换句话说,您可以指定q
介于这些值之间的 a,并且函数会找到最接近的值。
from scipy import stats
import numpy as np
stats.percentileofscore(np.arange(0,1,0.12), .65, 'weak') / 100
Run Code Online (Sandbox Code Playgroud)