Spec-Zone.ru › NumPy 1.16

numpy.percentile

numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False) [source]

Вычислить q-й процентиль данных по указанной оси.

Возвращает q-й процентиль(и) элементов массива.

Параметры:
a : array_like

Входной массив или объект, который можно преобразовать в массив.

q : array_like of float

Процентиль или последовательность процентилей для вычисления, которые должны быть в диапазоне от 0 до 100 включительно.

axis : {int, tuple of int, None}, optional

Ось или оси, по которым вычисляются процентили. По умолчанию процентиль(и) вычисляются по сплющенной версии массива.

Изменено в версии 1.9.0: Поддерживается кортеж осей

out : ndarray, optional

Альтернативный выходной массив, в который следует поместить результат. Он должен иметь такую же форму и длину буфера, как и ожидаемый результат, но тип (результата) будет приведён к необходимому, если потребуется.

overwrite_input : bool, optional

Если True, то разрешено изменять входной массив a промежуточными вычислениями, чтобы сохранить память. В этом случае содержимое входного a после завершения функции неопределено.

interpolation : {‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’}

Этот необязательный параметр определяет метод интерполяции, который следует использовать, когда искомый процентиль лежит между двумя точками данных i < j:

  • ‘linear’: i + (j - i) * fraction, где fraction — дробная часть индекса, окружённая i и j.
  • ‘lower’: i.
  • ‘higher’: j.
  • ‘nearest’: i или j, ближайшее из них.
  • ‘midpoint’: (i + j) / 2.

Введено в версии 1.9.0.

keepdims : bool, optional

Если это установлено в True, оси, которые были уменьшены, остаются в результате как размерности с размером один. С этим параметром результат будет правильно транслироваться относительно исходного массива a.

Введено в версии 1.9.0.

Возвращает:
percentile : scalar or ndarray

Если q — одиночный процентиль и axis=None, то результат является скаляром. Если задано несколько процентилей, первая ось результата соответствует процентилям. Другие оси — это оси, оставшиеся после уменьшения a. Если вход содержит целые числа или числа с плавающей точкой меньше float64, тип данных выходных данных — float64. В противном случае тип данных выходных данных такой же, как и у входных данных. Если out задан, возвращается этот массив.

См. также

mean

median
эквивалентно percentile(..., 50)

nanpercentile

quantile
эквивалентно процентилю, за исключением того, что q в диапазоне [0, 1].

Замечания

Дано вектор V длины N, q-й процентиль V — это значение q/100 пути от минимума до максимума в отсортированной копии V. Значения и расстояния ближайших соседей, а также параметр interpolation определят процентиль, если нормализованное ранжирование не соответствует точно расположению q. Эта функция эквивалентна медиане, если q=50, минимуму, если q=0, и максимуму, если q=100.

Примеры

>>> a = np.array([[10, 7, 4], [3, 2, 1]])
>>> a
array([[10,  7,  4],
       [ 3,  2,  1]])
>>> np.percentile(a, 50)
3.5
>>> np.percentile(a, 50, axis=0)
array([[ 6.5,  4.5,  2.5]])
>>> np.percentile(a, 50, axis=1)
array([ 7.,  2.])
>>> np.percentile(a, 50, axis=1, keepdims=True)
array([[ 7.],
       [ 2.]])
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([[ 6.5,  4.5,  2.5]])
>>> m
array([[ 6.5,  4.5,  2.5]])
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([ 7.,  2.])
>>> assert not np.all(a == b)

Разные типы интерполяции можно визуализировать графически:

import matplotlib.pyplot as plt

a = np.arange(4)
p = np.linspace(0, 100, 6001)
ax = plt.gca()
lines = [
    ('linear', None),
    ('higher', '--'),
    ('lower', '--'),
    ('nearest', '-.'),
    ('midpoint', '-.'),
]
for interpolation, style in lines:
    ax.plot(
        p, np.percentile(a, p, interpolation=interpolation),
        label=interpolation, linestyle=style)
ax.set(
    title='Interpolation methods for list: ' + str(a),
    xlabel='Percentile',
    ylabel='List item returned',
    yticks=a)
ax.legend()
plt.show()
../../_images/numpy-percentile-1.png

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.16.1/reference/generated/numpy.percentile.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API