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] являются:
‘inverted_cdf’
'averaged_inverted_cdf'
‘closest_observation’
'interpolated_inverted_cdf'
'hazen'
'weibull'
'linear' (по умолчанию)
‘median_unbiased’
'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. В противном случае тип выходных данных совпадает с типом входных данных. Если выход указан, возвращается этот массив.
Смотрите также
nanmeannanmedianэквивалентно
nanpercentile(..., 50)percentile,median,meannanquantileэквивалентно 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)