Вот еще один способ маскировки, который, как мне кажется, легче запомнить (хотя он и копирует массив). Для данного случая это выглядит так:
>>> import numpy
>>> a = numpy.array([1.0, 0.0, 2.0])
>>> ma = a[a != 0]
>>> ma.max()
2.0
>>> ma.min()
1.0
>>>
Обобщает другие выражения, такие как a> 0, numpy.isnan (a), ...
И вы можете комбинировать маски со стандартными операторами (+ означает ИЛИ, * означает И, - означает НЕ), например:
# Identify elements that are outside interpolation domain or NaN
outside = (xi < x[0]) + (eta < y[0]) + (xi > x[-1]) + (eta > y[-1])
outside += numpy.isnan(xi) + numpy.isnan(eta)
inside = -outside
xi = xi[inside]
eta = eta[inside]