Вы можете изменить свое понимание списка:
median = np.median(data)
filtered = [e if (u - 2 * s < e < u + 2 * s) else median for e in data]
или обновить напрямую, если данные numpy.array
:
median = np.median(data)
data[u - 2 * s < data < u + 2 * s] = median
Здесь только записи, для которых возвращается выражение u - 2 * s < data[i] < u + 2 * s
правда обновляются.Смотрите пример обновления всех четных чисел в массиве:
>>> import numpy as np
>>> l = np.array([1,2,3,4,5,6])
>>> l[l % 2 == 0] = -1
>>> l
array([ 1, -1, 3, -1, 5, -1])