numpy.std

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

Функция numpy.std() вычисляет среднеквадратичное (стандартное) отклонение значений элементов массива.

Среднеквадратичное отклонение чисел \( a_{1},\ldots ,a_{n} \) записывается как::

$${\displaystyle S={\sqrt {{\frac {1}{n}}\sum _{i=1}^{n}\left(a_{i}-{\bar {a}}\right)^{2}}}}$$

Где \( \bar {a} \) это среднее арифметическое чисел \( a_{1},\ldots ,a_{n} \).

Параметры:
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, average, median, mean

Примеры

>>> import numpy as np
>>> 
>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> 
>>> np.std(a)
2.0

Если у массива больше одной оси (больше одного измерения), то мы можем найти среднеквадратичное отклонение элементов массива вдоль каждой из них:

>>> a = np.arange(36).reshape(6, 6)
>>> a
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35]])
>>> 
>>> #  Среднеквадратичное столбцов:
... np.std(a, axis = 0)
array([10.24695077, 10.24695077, 10.24695077, 10.24695077, 10.24695077,
       10.24695077])
>>> 
>>> #  Среднеквадратичное строк:
... np.std(a, axis = 1)
array([1.70782513, 1.70782513, 1.70782513, 1.70782513, 1.70782513,
       1.70782513])

Параметр keepdims позволяет сохранить форму исходного массива, что позволяет в дальнейшем использовать механизм транслирования:

>>> d = np.arange(10).reshape(2, 5)
>>> d
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> 
>>> np.std(d, axis = 0, keepdims = True)
array([[2.5, 2.5, 2.5, 2.5, 2.5]])
>>> 
>>> np.std(d, axis = 1, keepdims = True)
array([[1.41421356],
       [1.41421356]])

Параметр out позволяет указать массив в который необходимо поместить результат расчетов:

>>> d
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> 
>>> m0 = np.zeros(5,)
>>> m0
array([0., 0., 0., 0., 0.])
>>> 
>>> np.std(d, axis = 0, out = m0)
array([2.5, 2.5, 2.5, 2.5, 2.5])
>>> 
>>> m0
array([2.5, 2.5, 2.5, 2.5, 2.5])

Параметр ddof позволяет указать необходимую дельту степени свободы:

>>> d
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> 
>>> np.std(d, ddof = 0)    #  значение по умолчанию
2.8722813232690143
>>> 
>>> np.std(d, ddof = 1)
3.0276503540974917
>>> 
>>> np.std(d, ddof = 1.5)
3.115426512203614