numpy.nanmean()

Функция numpy.nanmean() вычисляет среднее, игнорируя значения NaN. Незаменима, когда часть показаний с датчика отсутствует или помечена np.nan как ошибка чтения.

Сигнатура

numpy.nanmean(a, axis=None, dtype=None, out=None, keepdims=False, *, where=<no value>)

Параметры

  • a — входной массив с возможными NaN.

  • axis — ось вычисления.

  • dtype — тип промежуточных сумм.

  • keepdims — сохранять размерность.

  • where — дополнительная маска.

Возвращает

Скаляр или ndarray. Если все значения по оси — NaN, возвращается NaN и выдаётся предупреждение.

Пример 1. Среднее без NaN

import numpy as np

data = np.array([1.0, 2.0, np.nan, 4.0])
print(np.nanmean(data))
2.3333333333333335

np.mean для этих данных вернул бы NaN, nanmean корректно учитывает только 1, 2 и 4.

Пример 2. По столбцам

import numpy as np

data = np.array([[1.0,  2.0,  3.0],
                 [4.0,  np.nan, 6.0],
                 [7.0,  8.0,  np.nan]])
print(np.nanmean(data, axis=0))
[4.  5.  4.5]

Пример 3. Пропуски в показаниях DHT22

import numpy as np

# Часть замеров с DHT22 = NaN (CRC error)
temps = np.array([22.5, np.nan, 22.7, 22.6, np.nan, 22.8])
avg = np.nanmean(temps)
print(f"Средняя температура: {avg:.2f}°C")
Средняя температура: 22.65°C

Пример 4. Сравнение с обычным mean

import numpy as np

a = np.array([10.0, np.nan, 30.0])
print("mean:   ", np.mean(a))
print("nanmean:", np.nanmean(a))
mean:    nan
nanmean: 20.0

Пример 5. Сохранение размерности

import numpy as np

data = np.array([[1.0, np.nan, 3.0],
                 [4.0, 5.0,    np.nan]])
print(np.nanmean(data, axis=1, keepdims=True))
[[2. ]
 [4.5]]

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.