Как использовать 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, поэтому вам нужно оглядеться, чтобы увидеть, что можно и нельзя сделать с ними.
не использовали 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]