A=np.array(a)
A[:(A<np.percentile(a, 90)).argmin()].sum() #461
@JoshAdel's
%%timeit
...: b = np.cumsum(a)
...: p90 = np.percentile(a, 90)
...: b[b < p90][-1]
...:
1000 loops, best of 3: 217 µs per loop
This:
%timeit A[:(A<np.percentile(a, 90)).argmin()].sum()
10000 loops, best of 3: 191 µs per loop