Подтвердить что ты не робот

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

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

Matrice = [1, 2, None]

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

4b9b3361

Ответ 1

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

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.

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