Функция percentile
Функция percentile вычисляет указанный процентиль (квантиль) для одномерного или многомерного массива. Первым параметром передаётся массив данных, вторым - значение процентиля от 0 до 100. Функция поддерживает несколько методов интерполяции для случаев, когда процентиль попадает между двумя значениями данных.
Синтаксис
np.percentile(arr, q, axis=None, method='linear')
Параметры функции:
-
arr- входной массив данных -
q- значение процентиля от 0 до 100, либо список значений -
axis- ось для вычисления (по умолчанию вычисляется по всему массиву) -
method- метод интерполяции (по умолчанию 'linear')
Пример
Вычислим 50-й процентиль (медиану) для одномерного массива:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
res = np.percentile(arr, 50)
print(res)
Результат выполнения кода:
5.5
Функция возвращает среднее значение между 5 и 6, так как массив содержит чётное количество элементов.
Пример
Вычислим несколько процентилей одновременно, передав список значений:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
res = np.percentile(arr, [25, 50, 75])
print(res)
Результат выполнения кода:
[3.25 5.5 7.75]
Получен массив из трёх значений: первый квартиль, медиана и третий квартиль.
Пример
Вычислим процентили по строкам двумерного массива с помощью параметра axis:
import numpy as np
arr = np.array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]])
res = np.percentile(arr, 50, axis=1)
print(res)
Результат выполнения кода:
[ 3. 8. 13.]
Для каждой строки вычислена медиана (50-й процентиль) независимо.
Пример
Используем разные методы интерполяции для вычисления 25-го процентиля:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
res_linear = np.percentile(arr, 25, method='linear')
res_lower = np.percentile(arr, 25, method='lower')
res_higher = np.percentile(arr, 25, method='higher')
print(res_linear, res_lower, res_higher)
Результат выполнения кода:
2.75 2 3
Метод linear даёт интерполированное значение, lower возвращает нижнее из двух ближайших значений, а higher - верхнее.