numpy.nanpercentile#

numpy.nanpercentile(a, q, axis=None, out=None, overwrite_input=False, method='linear', keepdims= значение>, *, weights=None)[источник]#

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

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

Параметры:
aarray_like

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

qarray_like из float

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

ось{int, tuple of int, None}, optional

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

выходndarray, необязательно

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

overwrite_inputbool, необязательно

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

методstr, optional

Этот параметр определяет метод для оценки процентиля. Существует много различных методов, некоторые уникальны для NumPy. См. примечания для объяснения. Опции отсортированы по их типу R, как обобщено в статье H&F [1] являются:

  1. ‘inverted_cdf’

  2. 'averaged_inverted_cdf'

  3. ‘closest_observation’

  4. 'interpolated_inverted_cdf'

  5. 'hazen'

  6. 'weibull'

  7. 'linear' (по умолчанию)

  8. ‘median_unbiased’

  9. 'normal_unbiased'

Первые три метода являются разрывными. NumPy дополнительно определяет следующие разрывные вариации опции по умолчанию 'linear' (7.):

  • 'lower'

  • 'higher',

  • 'midpoint'

  • ‘nearest’

Изменено в версии 1.22.0: Этот аргумент ранее назывался "interpolation" и предлагал только "linear" по умолчанию и последние четыре опции.

keepdimsbool, необязательно

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

Если это значение отличается от значения по умолчанию, оно будет передано (в особом случае пустого массива) в mean функция базового массива. Если массив является подклассом и mean не имеет аргумента keepdims это вызовет RuntimeError.

весаarray_like, необязательный

Массив весов, связанных со значениями в a. Каждое значение в a вносит вклад в процентиль в соответствии с его связанным весом. Массив весов может быть либо 1-D (в этом случае его длина должна быть равна размеру a вдоль заданной оси) или той же формы, что и a. Если weights=None, тогда все данные в a предполагаются имеющими вес, равный единице. Только method="inverted_cdf" поддерживает веса.

Новое в версии 2.0.0.

Возвращает:
процентильскаляр или ndarray

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

Смотрите также

nanmean
nanmedian

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

percentile, median, mean
nanquantile

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

Примечания

Поведение numpy.nanpercentile с процентным соотношением q это numpy.quantile с аргументом q/100 (игнорируя значения nan). Для получения дополнительной информации см. numpy.quantile.

Ссылки

[1]

R. J. Hyndman и Y. Fan, «Выборочные квантили в статистических пакетах», The American Statistician, 50(4), стр. 361-365, 1996

Примеры

>>> import numpy as np
>>> a = np.array([[10., 7., 4.], [3., 2., 1.]])
>>> a[0][1] = np.nan
>>> a
array([[10.,  nan,   4.],
      [ 3.,   2.,   1.]])
>>> np.percentile(a, 50)
np.float64(nan)
>>> np.nanpercentile(a, 50)
3.0
>>> np.nanpercentile(a, 50, axis=0)
array([6.5, 2. , 2.5])
>>> np.nanpercentile(a, 50, axis=1, keepdims=True)
array([[7.],
       [2.]])
>>> m = np.nanpercentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.nanpercentile(a, 50, axis=0, out=out)
array([6.5, 2. , 2.5])
>>> m
array([6.5,  2. ,  2.5])
>>> b = a.copy()
>>> np.nanpercentile(b, 50, axis=1, overwrite_input=True)
array([7., 2.])
>>> assert not np.all(a==b)