Учитывая, что вы имеете дело с неоднородным интервалом (т. Е. Срезы имеют разный размер), нет, нет способа заставить numpy сделать это за один вызов функции.
Еслиэто был равномерный размер фрагмента, тогда вы могли бы делать это с помощью различных трюков, как прокомментировал @eat.
Однако, что не так с пониманием списка?Это в точности соответствует вашему циклу выше, но выглядит «чище», если вы об этом беспокоитесь.
ans = [numpy.percentile(A[s:t], 85) for s,t in L]