Spec-Zone.ru › NumPy 1.20

numpy.var

numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, *, where=<no value>) [source]

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

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

Параметры
aarray_like

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

axisNone or int or tuple of ints, optional

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

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

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

dtypedata-type, optional

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

outndarray, optional

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

ddofint, optional

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

keepdimsbool, optional

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

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

wherearray_like of bool, optional

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

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

Возвращает
variancendarray, see dtype parameter above

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

См. также

std, mean, nanmean, nanstd, nanvar
Определение типа результата

Примечания

Дисперсия — это среднее значение квадратов отклонений от среднего значения, т.е. var = mean(x), где x = abs(a - a.mean())**2.

Среднее значение обычно вычисляется как x.sum() / N, где N = len(x). Однако, если ddof указано, вместо него используется делитель N - ddof. В стандартной статистической практике ddof=1 обеспечивает несмещённую оценку дисперсии гипотетической бесконечной генеральной совокупности. ddof=0 даёт оценку максимального правдоподобия дисперсии для нормально распределённых переменных.

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

Для входных данных с плавающей точкой дисперсия вычисляется с той же точностью, что и входные данные. В зависимости от входных данных это может привести к неточным результатам, особенно для 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

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

Spec-Zone.ru

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