[Numpy-discussion] mean of two or more arrays while ignoring a specific value

David Warde-Farley dwf at cs.toronto.edu
Tue Jul 14 15:59:01 EDT 2009


On 14-Jul-09, at 3:33 PM, Greg Fiske wrote:

> Dear list,
>
>
>
> I'm learning to work with numpy arrays.  Can somebody explain how to  
> get the
> average of two separate arrays while ignoring a user defined value  
> in one
> array?
>
>
>
> For example:
>
>>>> a = numpy.array([1,5,4,99])
>
>>>> b = numpy.array([3,7,2,8])
>
>
>
> Ignoring the value 99, the result should be an array like c=  
> ([2,6,3,8])


The simplest way I can think of doing it:

In [60]: c = concatenate((a[newaxis,:], b[newaxis,:]),axis=0)

In [61]: c = where(c == 99, nan, float64(c))

In [62]: nansum(c,axis=0) / (~isnan(c)).sum(axis=0)
Out[62]: array([ 2.,  6.,  3.,  8.])

The last line could be replaced with scipy.stats.nanmean(c, axis=0) if  
you have scipy installed.

David




More information about the NumPy-Discussion mailing list