numpy.nanquantile#
-
numpy.nanquantile(a, q, axis=None, out=None, overwrite_input=False, method='linear', keepdims=
значение> , *, weights=None)[источник]# Вычислить q-й квантиль данных вдоль указанной оси, игнорируя значения nan. Возвращает q-й квантиль(и) элементов массива.
- Параметры:
- aarray_like
Входной массив или объект, который можно преобразовать в массив, содержащий значения nan, которые следует игнорировать
- qarray_like из float
Вероятность или последовательность вероятностей для вычисляемых квантилей. Значения должны быть в диапазоне от 0 до 1 включительно.
- ось{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 вносят вклад в квантиль в соответствии со своим связанным весом. Массив весов может быть либо одномерным (в этом случае его длина должна быть равна размеру a вдоль заданной оси) или той же формы, что и a. Если weights=None, тогда все данные в a предполагаются имеющими вес, равный единице. Только method="inverted_cdf" поддерживает веса.
Новое в версии 2.0.0.
- Возвращает:
- квантильскаляр или ndarray
Если q это одиночная вероятность и axis=None, тогда результат является скаляром. Если задано несколько уровней вероятности, первая ось результата соответствует квантилям. Остальные оси — это оси, которые остаются после сокращения a. Если входные данные содержат целые числа или числа с плавающей точкой меньше
float64, выходной тип данных —float64. В противном случае тип выходных данных совпадает с типом входных данных. Если выход указан, возвращается этот массив.
Смотрите также
quantilenanmean,nanmediannanmedianэквивалентно
nanquantile(..., 0.5)nanpercentileто же, что и nanquantile, но с q в диапазоне [0, 100].
Примечания
Поведение
numpy.nanquantileсовпадает сnumpy.quantile(игнорируя значения 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.quantile(a, 0.5) np.float64(nan) >>> np.nanquantile(a, 0.5) 3.0 >>> np.nanquantile(a, 0.5, axis=0) array([6.5, 2. , 2.5]) >>> np.nanquantile(a, 0.5, axis=1, keepdims=True) array([[7.], [2.]]) >>> m = np.nanquantile(a, 0.5, axis=0) >>> out = np.zeros_like(m) >>> np.nanquantile(a, 0.5, axis=0, out=out) array([6.5, 2. , 2.5]) >>> m array([6.5, 2. , 2.5]) >>> b = a.copy() >>> np.nanquantile(b, 0.5, axis=1, overwrite_input=True) array([7., 2.]) >>> assert not np.all(a==b)