[Numpy-discussion] mask one array using another array

Olivier Delalleau shish at keba.be
Mon Nov 21 21:13:39 EST 2011


I can't really figure out if that's the case in your code, but if you need
to repeat the mask along a new dimension (for instance, the first one), you
can do:

numpy.tile(mask.mask, [number_of_repeats] + [1] * len(mask.mask.shape))

(not sure that's the most elegant way to do it, but it should work)

-=- Olivier

2011/11/21 questions anon <questions.anon at gmail.com>

> Excellent, thank you.
> I just realised this does not work with my data because of the extra
> dimension.
> I have a mask that matches my 2-dimensional array but my data is for every
> hour over a month so the arrays do not match. Is there a way to make them
> match or mask each time?
> thanks again
>
> This is some of my code:
>
>
>                         for ncfile in files:
>                                 if ncfile[-3:]=='.nc':
>                                     print "dealing with ncfiles:",
> path+ncfile
>                                     ncfile=os.path.join(path,ncfile)
>                                     ncfile=Dataset(ncfile, 'r+', 'NETCDF4')
>                                     TSFC=ncfile.variables['T_SFC'][:]
>                                     TIME=ncfile.variables['time'][:]
>
> fillvalue=ncfile.variables['T_SFC']._FillValue
>                                     TSFC=MA.masked_values(TSFC, fillvalue)
>                                     ncfile.close()
>
>                                     TSFC=MA.masked_array(TSFC,
> mask=newmask.mask)
>
>
>
>
>
>
> On Tue, Nov 22, 2011 at 11:21 AM, Olivier Delalleau <shish at keba.be> wrote:
>
>> If your new array is x, you can use:
>>
>> numpy.ma.masked_array(x, mask=mask.mask)
>>
>> -=- Olivier
>>
>> 2011/11/21 questions anon <questions.anon at gmail.com>
>>
>>> I am trying to mask one array using another array.
>>>
>>> I have created a masked array using
>>> mask=MA.masked_equal(myarray,
>>> 0),
>>> that looks something like:
>>> [1  -  -  1,
>>>  1  1  -  1,
>>>  1  1  1  1,
>>>  -   1  -  1]
>>>
>>> I have an array of values that I want to mask whereever my mask has a a
>>> '-'.
>>> how do I do this?
>>> I have looked at
>>> http://www.cawcr.gov.au/bmrc/climdyn/staff/lih/pubs/docs/masks.pdf but
>>> the command:
>>>
>>> d = array(a, mask=c.mask()
>>>
>>> results in this error:
>>> TypeError: 'numpy.ndarray' object is not callable
>>>
>>> I basically want to do exactly what that article does in that equation.
>>>
>>> Any feedback will be greatly appreciated.
>>>
>>> _______________________________________________
>>> NumPy-Discussion mailing list
>>> NumPy-Discussion at scipy.org
>>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>>
>>>
>>
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion at scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>
>>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20111121/e8931f42/attachment.html>


More information about the NumPy-Discussion mailing list