import MA
a = MA.array([1, 2, None], mask = [0, 0, 1])
print "average =", MA.average(a)
К сожалению, маскированные массивы не полностью поддерживаются в numpy, поэтому вам нужно посмотреть вокруг, чтобы увидеть, что с ними можно и не может быть сделано.
Ответ 2
Вы можете использовать scipy для этого:
import scipy.stats.stats as st
m=st.nanmean(vec)
Ответ 3
не использовали numpy, но в стандартном python вы можете отфильтровать None, используя списки
или функция фильтра
>>> [i for i in [1, 2, None] if i != None]
[1, 2]
>>> filter(lambda x: x != None, [1, 2, None])
[1, 2]
а затем усреднить результат, чтобы игнорировать None
Ответ 4
Вы также можете уклониться от значений, таких как NaN или Inf.
In [1]: array([1, 2, None])
Out[1]: array([1, 2, None], dtype=object)
In [2]: array([1, 2, NaN])
Out[2]: array([ 1., 2., NaN])
NaNs могут использоваться для представления недостающих значений в вычислениях.
Собственно, это не работает для функции mean(), хотя и так неразумно.:)
In [20]: mean([1, 2, NaN])
Out[20]: nan
Ответ 5
Вы также можете использовать фильтр, передать None ему, он будет фильтровать объекты не True, также 0,: D
Поэтому используйте его, когда вам тоже не нужно 0.