变量的累积和直到给定的百分位数

时间:2014-04-01 01:05:04

标签: python numpy percentile

我想总结一个数组中的所有值,直到给定的百分位数。 E.g。

import numpy as np
a = [15, 40, 124, 282, 914, 308]
print np.percentile(a,90)

第90百分位数是~611,直到那时的累积总和是461

Python中有没有可以做到的功能?

3 个答案:

答案 0 :(得分:4)

我不知道,但你可以这样做

import numpy as np
from itertools import takewhile

a = [15, 40, 124, 282, 914, 308]
p90 = np.percentile(a,90)
print sum(takewhile(lambda x : x < p90,  a))

输出:

461

答案 1 :(得分:4)

import numpy as np
a = np.array([15, 40, 124, 282, 914, 308])
b = np.cumsum(a)
p90 = np.percentile(a, 90)
print b[b < p90][-1] #461

答案 2 :(得分:3)

A=np.array(a)
A[:(A<np.percentile(a, 90)).argmin()].sum() #461

@ JoshAdel的

%%timeit
    ...: b = np.cumsum(a)
    ...: p90 = np.percentile(a, 90)
    ...: b[b < p90][-1]
    ...: 
1000 loops, best of 3: 217 µs per loop

此:

%timeit A[:(A<np.percentile(a, 90)).argmin()].sum()
10000 loops, best of 3: 191 µs per loop