[Numpy-discussion] Masked Array Usage Problems

josef.pktd at gmail.com josef.pktd at gmail.com
Sun Apr 11 01:10:28 EDT 2010


On Sun, Apr 11, 2010 at 1:00 AM, Lane Brooks <lane at brooks.nu> wrote:
>
> On Apr 10, 2010, at 5:17 AM, josef.pktd at gmail.com wrote:
>
>> On Sat, Apr 10, 2010 at 3:49 AM, Lane Brooks <lane at brooks.nu> wrote:
>>> I am trying out masked arrays for the first time and having some
>>> problems. I have a 2-D image as dtype=numpy.int16
>>>
>>> I create a mask of all False to not mask out any pixels.
>>>
>>> I calculate the mean of the image original image and it comes out
>>> ~597.
>>> I calculate the mean of the masked array and it comes out differently
>>> around -179.  It produces the same negative mean value no matter what
>>> masks I try, e.g. (all True, all False, etc).  Furthermore there
>>> are no
>>> negative samples in the entire array.
>>>
>>> Any ideas on what am I doing wrong?
>>>
>>> Here is some sample code showing the behavior:
>>>
>>> In [1]: img.dtype, img.shape
>>> Out[1]: (dtype('int16'), (3200, 3456))
>>>
>>> In [2]: mask = numpy.zeros(img.shape, dtype=bool)
>>>
>>> In [3]: imgma = ma.masked_array(img, mask)
>>>
>>> In [4]: img.mean()
>>> Out[4]: 597.15437617549185
>>>
>>> In [5]: imgma.mean()
>>> Out[5]: -179.56858678747108
>>>
>>> In [6]: imgma.min()
>>> Out[6]: 25
>>>
>>> In [7]: numpy.__version__
>>> Out[7]: '1.3.0'
>>>
>>> In [8]: numpy.ma.__version__
>>> Out[8]: '1.0'
>>
>> Just a guess untill Pierre replies:
>>
>> It looks to me like an integer overflow bug. Can you try
>>
>> imgma.mean(dtype=float)
>>
>> to do the accumulation with floating points?
>>
>> Josef
>>>
>
> Indeed using dtype=float solved the problem. The numpy.mean doc string
> says the default accumulator type for all int types is a float. Why is
> ma.mean different, especially since the    ma.mean doc string says to
> see the numpy.mean doc string?

I think it is a bug in ma.mean, since the docstring clearly specifies
the casting to float.
Can you file a ticket? I think Pierre will look at it when he finds time.

Thanks,

Josef

>
> Thanks
> Lane
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>



More information about the NumPy-Discussion mailing list