numpy.nanvar

numpy.nanvar(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)

Функция numpy.nanvar() вычисляет дисперсию значений элементов массива, игнорируя значения np.nan.

Дисперсия случайной величины A записывается как:

$${\displaystyle D[X]=M\left[{\big (}X-M[X]{\big )}^{2}\right]}$$

Где M - математическое ожидание.

Параметры:
a - массив NumPy или подобный массиву объект.
Входные данные.
axis - число, кортеж целых чисел или None (необязательный параметр).
Позволяет задать ось или несколько осей вдоль которых вычисляется дисперсия. По умолчанию установлено значение None, что соответствует вычислению дисперсии всех элементов массива, так словно он сжат до одной оси.
dtype - тип данных NumPy (необязательный параметр).
По умолчанию равен None, что означает использование для вычисления дисперсии целых чисел типа float64, а для чисел с плавающей точкой тип данных будет совпадать с типом данных входного массива.
out - массив NumPy (необязательный параметр).
Массив в который можно поместить результат функции. Данный массив должен соответствовать форме и типу данных результирующего массива функции (зачастую, тип данных может быть преобразован автоматически). Указание данного параметра, позволяет избежать лишней операции присваивания тем самым немного ускоряя работу вашего кода. Полезный параметр если вы очень часто обращаетесь к функции в цикле.
ddof - вещественное число (необязательный параметр).
Параметр ddof - дельта степени свободы. Обычно, принято (и по умолчанию установлено) считать ddof = 0, но в разных источниках (например ГОСТ) требуется что бы параметр ddof имел значение отличное от 0, например 1 или 1,5.
keepdims - True или False (необязательный параметр).
Если данный параметр указан как True, то результат работы функции по указанным осям будет способен к транслированию по исходному массиву, т.е. результат функции оформляется в массив с количеством осей исходного массива. Если параметр установлен в значение False, то результатом работы функции будет либо число, либо одномерный массив чисел. Доступно в NumPy с версии 1.9.0.
Возвращает:
результат - массив NumPy или число
Дисперсию значений элементов массива в виде числа для одномерного массива, или многомерного если параметр axis = None. Для многомерного массива возвращает массив NumPy если в параметре axis оси указаны.

Смотрите так же:
var, std, mean

Примеры

Если все элементы массива равны np.nan или таковыми являются все элементы вдоль некоторой оси, то только в этом случае будет возвращено значение np.nan:

>>> import numpy as np
>>> 
>>> a = np.full(5, np.nan)
>>> a
array([nan, nan, nan, nan, nan])
>>> 
>>> np.nanvar(a)
RuntimeWarning: Degrees of freedom <= 0 for slice.
nan
>>> 
>>> 
>>> b = np.arange(8.).reshape(2, 4)
>>> b[0, :] = np.nan
>>> 
>>> b
array([[nan, nan, nan, nan],
       [ 4.,  5.,  6.,  7.]])
>>> 
>>> np.nanvar(b, axis = 1)
array([ nan, 1.25])

Во всех остальных случаях, дисперсия значений рассчитывается так, буд-то бы значений np.nan в массиве вовсе нет:

>>> c = np.arange(9)
>>> c
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> 
>>> np.var(c)
6.666666666666667
>>> 
>>> 
>>> c = np.append(c, np.nan)
>>> c
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8., nan])
>>> 
>>> np.var(c)
nan
>>> 
>>> np.nanvar(c)
6.666666666666667

Примеры использования других параметров смотрите в описании функции np.nanvar().