numpy.nanstd#

numpy.nanstd(a, axis=None, dtype=None, out=None, ddof=0, keepdims= значение>, *, where= значение>, mean=<нет значение>, correction= значение>)[источник]#

Вычислите стандартное отклонение вдоль указанной оси, игнорируя значения NaN.

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

Для всех срезов NaN или срезов с нулевыми степенями свободы возвращается NaN и RuntimeWarning вызывается исключение.

Параметры:
aarray_like

Вычислить стандартное отклонение не-NaN значений.

ось{int, tuple of int, None}, optional

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

dtypedtype, опционально

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

выходndarray, необязательно

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

ddof{int, float}, опционально

Означает Delta Degrees of Freedom. Делитель, используемый в вычислениях, равен N - ddof, где N представляет количество элементов, не являющихся NaN. По умолчанию ddof равно нулю.

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

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

Если это значение отличается от значения по умолчанию, оно передаётся как есть в соответствующие функции подклассов. Если эти функции не имеют keepdims kwarg, будет вызвано RuntimeError.

гдеarray_like из bool, необязательный

Элементы для включения в стандартное отклонение. См. reduce подробности.

Новое в версии 1.22.0.

meanarray_like, необязательный

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

Новое в версии 2.0.0.

коррекция{int, float}, опционально

Совместимое с Array API имя для ddof параметр. Только один из них может быть предоставлен одновременно.

Новое в версии 2.0.0.

Возвращает:
standard_deviationndarray, см. параметр dtype выше.

Если выход равно None, вернуть новый массив, содержащий стандартное отклонение, иначе вернуть ссылку на выходной массив. Если ddof >= количества ненулевых элементов в срезе или срез содержит только NaN, то результат для этого среза - NaN.

Примечания

Стандартное отклонение — это квадратный корень из среднего квадратов отклонений от среднего значения: std = sqrt(mean(abs(x - x.mean())**2)).

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

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

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

Примеры

>>> import numpy as np
>>> a = np.array([[1, np.nan], [3, 4]])
>>> np.nanstd(a)
1.247219128924647
>>> np.nanstd(a, axis=0)
array([1., 0.])
>>> np.nanstd(a, axis=1)
array([0.,  0.5]) # may vary