РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
280 of 541 menu

Функция nanstd

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

Синтаксис

np.nanstd(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)

Основные параметры:

  • a - входной массив или объект, который можно преобразовать в массив;
  • axis - ось, вдоль которой вычисляется отклонение (по умолчанию None - вычисляется по всему массиву);
  • ddof - поправка степени свободы (по умолчанию 0 - стандартное отклонение по генеральной совокупности);
  • keepdims - сохранять ли размерность (по умолчанию False);
  • where - условие для включения элементов в расчёт.

Пример с одномерным массивом

Давайте вычислим стандартное отклонение для одномерного массива с пропущенными значениями:

import numpy as np arr = np.array([1.0, 2.0, np.nan, 4.0, 5.0]) res = np.nanstd(arr) print(res)

Результат выполнения кода:

1.5811388300841898

При этом стандартное отклонение, вычисленное с помощью обычной функции std, вернуло бы nan, так как в массиве присутствует пропуск.

Пример с двумерным массивом

Рассмотрим вычисление стандартного отклонения по строкам и столбцам двумерного массива с пропусками:

import numpy as np arr = np.array([ [1.0, 2.0, np.nan], [4.0, 5.0, 6.0], [np.nan, 8.0, 9.0] ]) # По всему массиву res_all = np.nanstd(arr) print(res_all) # По строкам (axis=1) res_rows = np.nanstd(arr, axis=1) print(res_rows) # По столбцам (axis=0) res_cols = np.nanstd(arr, axis=0) print(res_cols)

Результат выполнения кода:

2.9154759474226504 [0.5 0.81649658 0.5 ] [1.5 2.44948974 1.5 ]

Пример с параметром ddof

Параметр ddof позволяет управлять степенью свободы. При ddof=1 вычисляется несмещённое выборочное стандартное отклонение:

import numpy as np arr = np.array([1.0, 2.0, np.nan, 4.0, 5.0]) # Генеральное стандартное отклонение (ddof=0) res_pop = np.nanstd(arr, ddof=0) print(res_pop) # Выборочное стандартное отклонение (ddof=1) res_sample = np.nanstd(arr, ddof=1) print(res_sample)

Результат выполнения кода:

1.5811388300841898 1.8257418583505538

Пример с параметром keepdims

Параметр keepdims сохраняет размерность результата, что полезно при работе с широковещанием:

import numpy as np arr = np.array([ [1.0, 2.0, np.nan], [4.0, 5.0, 6.0] ]) # Без сохранения размерности res_no_keep = np.nanstd(arr, axis=1) print(res_no_keep.shape) # С сохранением размерности res_keep = np.nanstd(arr, axis=1, keepdims=True) print(res_keep.shape) print(res_keep)

Результат выполнения кода:

(2,) (2, 1) [[0.5] [0.81649658]]

Пример с параметром where

Параметр where позволяет выбирать элементы для расчёта по определённому условию:

import numpy as np arr = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) mask = np.array([True, True, False, True, True]) # Вычисляем отклонение только для элементов, где mask=True res = np.nanstd(arr, where=mask) print(res)

Результат выполнения кода:

1.5

Смотрите также

  • функцию nanmean,
    которая вычисляет среднее арифметическое без учёта NaN
  • функцию nanvar,
    которая вычисляет дисперсию без учёта NaN
  • функцию nansum,
    которая вычисляет сумму элементов без учёта NaN
  • функцию nanmedian,
    которая вычисляет медиану без учёта NaN
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить