Spec-Zone.ru › NumPy 2.0

numpy.ma.MaskedArray.var

метод

ma.MaskedArray.var(axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, mean=<no value>)[source]

Вычисление дисперсии по указанной оси.

Возвращает дисперсию элементов массива, мера разброса распределения. Дисперсия вычисляется для уплощенного массива по умолчанию, в противном случае по указанной оси.

Параметры:
aarray_like

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

axisNone или int или кортеж из целых чисел, необязательно

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

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

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

dtypeтип данных, необязательно

Тип, используемый при вычислении дисперсии. Для массивов целочисленного типа по умолчанию используется float64; для массивов с плавающей запятой он такой же, как и тип массива.

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

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

ddof{int, float}, необязательно

«Delta Degrees of Freedom»: делитель, используемый в расчете, равен N - ddof, где N представляет количество элементов. По умолчанию ddof равно нулю. См. примечания для получения подробной информации об использовании ddof.

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

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

Если передано значение по умолчанию, то keepdims не будет передаваться в метод var подклассов ndarray, однако любое значение, отличное от значения по умолчанию, будет. Если метод подкласса не реализует keepdims , будут подняты исключения.

wherearray_like булевых значений, необязательно

Элементы, которые следует включить в дисперсию. Подробности см. в reduce.

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

meanarray like, необязательно

Предоставьте среднее значение, чтобы избежать его повторного вычисления. Среднее значение должно иметь форму, как если бы оно было вычислено с keepdims=True. Ось для вычисления среднего значения должна быть такой же, как и в вызове этой функции var.

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

correction{int, float}, необязательно

Имя параметра ddof совместимое с API массивов. Одновременно можно предоставить только один из них.

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

Возвращаемое значение:
variancendarray, см. параметр dtype выше

Если out=None, возвращает новый массив, содержащий дисперсию; в противном случае возвращается ссылка на массив вывода.

См. также

std, mean, nanmean, nanstd, nanvar
Определение типа выходных данных

Примечания

Существует несколько общих вариантов вычисления дисперсии массива. Предполагая, что входной a — одномерный массив NumPy, и mean либо предоставлен в качестве аргумента, либо вычислен как a.mean(), NumPy вычисляет дисперсию массива как:

N = len(a)
d2 = abs(a - mean)**2  # abs is for complex `a`
var = d2.sum() / (N - ddof)  # note use of `ddof`

Различные значения аргумента ddof полезны в разных контекстах. По умолчанию NumPy ddof=0 соответствует выражению:

\[\frac{\sum_i{|a_i - \bar{a}|^2 }}{N}\]

который иногда называется «дисперсией генеральной совокупности» в области статистики, поскольку он применяет определение дисперсии к a так, как если бы a была полной совокупностью возможных наблюдений.

Многие другие библиотеки определяют дисперсию массива по-другому, например:

\[\frac{\sum_i{|a_i - \bar{a}|^2}}{N - 1}\]

В статистике полученная величина иногда называется «дисперсией выборки», потому что, если a является случайной выборкой из большей генеральной совокупности, это вычисление предоставляет несмещенную оценку дисперсии генеральной совокупности. Использование \(N-1\) в знаменателе часто называется «поправкой Бесселя», так как она исправляет смещение (к меньшим значениям) в оценке дисперсии, введенное при использовании выборочного среднего a вместо истинного среднего значения генеральной совокупности. Для этой величины используйте ddof=1.

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

Для входных данных с плавающей запятой дисперсия вычисляется с той же точностью, что и входные данные. В зависимости от входных данных это может привести к неточным результатам, особенно для float32 (см. пример ниже). Указание накопителя с большей точностью с помощью ключевого слова dtype может решить эту проблему.

Примеры

>>> a = np.array([[1, 2], [3, 4]])
>>> np.var(a)
1.25
>>> np.var(a, axis=0)
array([1.,  1.])
>>> np.var(a, axis=1)
array([0.25,  0.25])

В одинарной точности var() может быть неточной:

>>> a = np.zeros((2, 512*512), dtype=np.float32)
>>> a[0, :] = 1.0
>>> a[1, :] = 0.1
>>> np.var(a)
0.20250003

Вычисление дисперсии в float64 более точно:

>>> np.var(a, dtype=np.float64)
0.20249999932944759 # may vary
>>> ((1-0.55)**2 + (0.1-0.55)**2)/2
0.2025

Указание аргумента where:

>>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]])
>>> np.var(a)
6.833333333333333 # may vary
>>> np.var(a, where=[[True], [True], [False]])
4.0

Использование ключевого слова mean для экономии времени вычислений:

>>> import numpy as np
>>> from timeit import timeit
>>>
>>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]])
>>> mean = np.mean(a, axis=1, keepdims=True)
>>>
>>> g = globals()
>>> n = 10000
>>> t1 = timeit("var = np.var(a, axis=1, mean=mean)", globals=g, number=n)
>>> t2 = timeit("var = np.var(a, axis=1)", globals=g, number=n)
>>> print(f'Percentage execution time saved {100*(t2-t1)/t2:.0f}%')

Percentage execution time saved 32%

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.ma.MaskedArray.var.html

Spec-Zone.ru

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