Как использовать NumPy со значением None в Python? - PullRequest
22 голосов
/ 07 июня 2009

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

Matrice = [1, 2, None]

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

Ответы [ 6 ]

11 голосов
/ 07 июня 2009

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

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

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

6 голосов
/ 23 ноября 2011

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

import scipy.stats.stats as st
m=st.nanmean(vec)
3 голосов
/ 06 декабря 2009

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

На самом деле, это может быть даже не клудж. Википедия говорит :

NaN могут использоваться для представления пропущенных значений в вычислениях.

На самом деле, это не работает для функции mean (), поэтому не имеет значения. :)

In [20]: mean([1, 2, NaN])
Out[20]: nan
3 голосов
/ 07 июня 2009

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

2 голосов
/ 06 декабря 2009

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

>>> filter(None,[1, 2, None])
[1, 2]
0 голосов
/ 06 июня 2018

np.mean (Matrice [Matrice! = None])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...