# Re: How does the mask function work?

From: John Kerfoot <johnkerfoot_at_nyahnyahspammersnyahnyah>
Date: Mon Mar 14 2011 - 12:10:53 MDT

Hi Gibies,

Thanks for your response, but I'm still confused by the behavior.

My understanding is that since I set the 3rd argument in the function
call to True:

That x should be masked at the points where the expression is true
(ie: everywhere that f is less than 3). So this should result in the
first 6 values of x:

Variable: x
Type: integer
Total Size: 36 bytes
9 values
Number of Dimensions: 1
Dimensions and sizes: [9]
Coordinates:
(0) 0
(1) 1
(2) 2
(3) 3
(4) 4
(5) 5
(6) 6
(7) 7
(8) 8

getting masked because this is where the values in f are less than 3:

Variable: f
Type: integer
Total Size: 36 bytes
9 values
Number of Dimensions: 1
Dimensions and sizes: [9]
Coordinates:
(0) 1
(1) 1
(2) 1
(3) 2
(4) 2
(5) 2
(6) 3
(7) 3
(8) 3

Your explanation (and the result from executing the code) seems to be
the opposite. Can you provide me with a little clarification?

thanks again for your time and help.

John

On Mon, Mar 14, 2011 at 12:01 AM, gibies george <gibies@tropmet.res.in> wrote:
>
>
> On 14 March 2011 02:01, John Kerfoot <johnkerfoot@gmail.com> wrote:
>>
>> I've got a large AVHRR sea-surface temperature dataset for which I'm
>> trying to mask out some bad values; however I'm seeing some strange
>> looking for some clarification.
>>
>> Before getting to the AVHRR dataset, I tried the following to make
>> sure that I understood how mask worked:
>>
>> x = ispan(0,8,1);
>> print(x);
>>
>> f = (/1, 1, 1, 2, 2, 2, 3, 3, 3/);
>> print(f)
>>
>> : Mask all corresponding values in x where f is less than 3
>> z = mask(x, (f.lt.3), True);
>
>
>  Here the function have Masked all corresponding values in x except where f
> is less than 3
>>
>> print(z);
>>
>> I expected the first 6 values of x to be set to the fill value, but
>> the opposite happened:
>>
>> Variable: x
>> Type: integer
>> Total Size: 36 bytes
>>            9 values
>> Number of Dimensions: 1
>> Dimensions and sizes:   [9]
>> Coordinates:
>> (0)     0
>> (1)     1
>> (2)     2
>> (3)     3
>> (4)     4
>> (5)     5
>> (6)     6
>> (7)     7
>> (8)     8
>>
>>
>> Variable: f
>> Type: integer
>> Total Size: 36 bytes
>>            9 values
>> Number of Dimensions: 1
>> Dimensions and sizes:   [9]
>> Coordinates:
>> (0)     1
>> (1)     1
>> (2)     1
>> (3)     2
>> (4)     2
>> (5)     2
>> (6)     3
>> (7)     3
>> (8)     3
>>
>
>  Here the function have Masked all corresponding values in x except where f
> is less than 3
>
>>
>> Variable: z
>> Type: integer
>> Total Size: 36 bytes
>>            9 values
>> Number of Dimensions: 1
>> Dimensions and sizes:   [9]
>> Coordinates:
>> Number Of Attributes: 1
>>  _FillValue :  -999
>> (0)     0
>> (1)     1
>> (2)     2
>> (3)     3
>> (4)     4
>> (5)     5
>> (6)     -999
>> (7)     -999
>> (8)     -999
>>
>>
>>
>>  So I'm clearly not understanding how to use this function.  Can
>> someone explain this result?  How can I get all values of x to be
>> masked where f is less than 3?
>>
>> Once I understand this, I'll have a follow up question using the AVHRR
>> datset.
>>
>> John
>> _______________________________________________
>> ncl-talk mailing list
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
>
> --
> Gibies George,   CSIR-RF,
> Seasonal Scale Prediction Group,
> Climate and Global Modelling Division,
> Indian Institute of Tropical Meteorology,
> NCL (P. O.), Pashan,
> Pune 411008, India.
>