numpy.std
-
numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False)[source] -
Вычислить стандартное отклонение по указанной оси.
Возвращает стандартное отклонение, мера разброса распределения, элементов массива. Стандартное отклонение вычисляется для сглаженного массива по умолчанию, в противном случае по указанной оси.
Параметры: a : array_like
Вычислить стандартное отклонение этих значений.
axis : None или int или кортеж из целых чисел, необязательно
Ось или оси, по которым вычисляется стандартное отклонение. По умолчанию вычисляется стандартное отклонение для сглаженного массива.
Если это кортеж из целых чисел, стандартное отклонение вычисляется по нескольким осям, а не по одной оси или всем осям, как раньше.
dtype : dtype, необязательно
Тип, используемый при вычислении стандартного отклонения. Для массивов целочисленного типа по умолчанию используется float64, для массивов с плавающей точкой — такой же, как тип массива.
out : ndarray, необязательно
Альтернативный выходной массив, в который поместить результат. Он должен иметь такую же форму, как ожидаемый результат, но тип (вычисленных значений) будет преобразован при необходимости.
ddof : int, необязательно
Означает Delta Degrees of Freedom. Делитель, используемый в расчётах, равен
N - ddof, гдеN— количество элементов. По умолчаниюddofравно нулю.keepdims : bool, необязательно
Если установлено в True, оси, которые были уменьшены, оставляются в результате в виде размерностей с размером один. С этим параметром результат будет корректно транслироваться с исходным
arr.Возвращает: standard_deviation : ndarray, см. параметр dtype выше.
Если
outравно None, возвращается новый массив, содержащий стандартное отклонение, в противном случае возвращается ссылка на выходной массив.Примечания
Стандартное отклонение — это квадратный корень из среднего значения квадратов отклонений от среднего, т.е.
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может помочь решить эту проблему.Примеры
>>> a = np.array([[1, 2], [3, 4]]) >>> np.std(a) 1.1180339887498949 >>> np.std(a, axis=0) array([ 1., 1.]) >>> np.std(a, axis=1) array([ 0.5, 0.5])
В одинарной точности std() может быть неточным:
>>> a = np.zeros((2, 512*512), dtype=np.float32) >>> a[0, :] = 1.0 >>> a[1, :] = 0.1 >>> np.std(a) 0.45000005
Вычисление стандартного отклонения в float64 более точно:
>>> np.std(a, dtype=np.float64) 0.44999999925494177
© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.std.html