Как использовать numpy со значением "None" в Python?

Я хотел бы вычислить среднее значение массива в Python в этой форме:

Matrice = [1, 2, None]

Я просто хотел бы иметь свой None значение игнорируется numpy.mean расчет, но я не могу понять, как это сделать.

6 ответов


вы ищете массивы в масках. Вот пример.

import MA
a = MA.array([1, 2, None], mask = [0, 0, 1])
print "average =", MA.average(a)

к сожалению, маскированные массивы не полностью поддерживаются в numpy, поэтому вам нужно оглядеться, чтобы увидеть, что можно и нельзя сделать с ними.


вы можете использовать scipy для этого:

import scipy.stats.stats as st
m=st.nanmean(vec)

не использовали 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


вы также можете использовать значения типа 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

вы также можете использовать фильтр, не передавать ему, он будет фильтровать не истинные объекты, также 0,: D Итак, используйте его, когда вам тоже не нужен 0.

>>> filter(None,[1, 2, None])
[1, 2]

np.значит(Матриче[Матриче != Нет])