将数字映射到其百分位数

时间:2017-02-21 15:53:37

标签: python pandas numpy percentile

我想numpy.percentile结果应用于其参数,即将输入向量中的每个数字映射到其分位数。

例如,如果v=np.array([1,2,3,4]),我只想要两个分位数(大于和小于中位数),我会np.array([0,0,1,1])告诉我v的前两个元素更小比中位数和后两个都大于中位数。

请注意,我感兴趣的是十分位数,而不仅仅是中位数!

IOW,@ PaulPanzer击中钉子:

np.digitize(v,np.percentile(v,quantiles))

谢谢!

2 个答案:

答案 0 :(得分:3)

(v > np.percentile(v, 50)).astype(int)
Out[93]:
array([0, 0, 1, 1])

答案 1 :(得分:2)

使用np.digitize

perc = np.percentile(data, q)
indices = np.digitize(data, perc)

示例q = [25,50,75]data = np.arange(8)

indices
# array([0, 0, 1, 1, 2, 2, 3, 3])