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.