[Numpy-discussion] np.ma.argmax not respecting the mask?
Stéfan van der Walt
stefan at sun.ac.za
Tue Jul 9 09:14:28 EDT 2013
On Tue, Jul 9, 2013 at 2:55 PM, Chao YUE <chaoyuejoy at gmail.com> wrote:
> I am using 1.7.1 version of numpy and np.ma.argmax is not repecting the
> mask?
>
> In [96]: d3
> Out[96]:
> masked_array(data =
> [[-- -- -- -- 4]
> [5 -- 7 8 9]],
> mask =
> [[ True True True True False]
> [False True False False False]],
> fill_value = 6)
>
>
> In [97]: np.ma.argmax(d3,axis=0)
> Out[97]: array([1, 0, 1, 1, 1])
This is the result I would expect. If both values are masked, the
fill value is used, so there is always an argmin value.
The following workaround should have done the trick, but it exposes a
different bug:
x = np.ma.array([[0,1,2,3,4],[5,6,7,8, 9]], mask=[[1, 1, 1, 1, 0], [0,
1, 0, 0 ,0]], dtype=float)
np.nanargmax(x.filled(np.nan), axis=0)
This breaks with "ValueError: cannot convert float NaN to integer"
Stéfan
More information about the NumPy-Discussion
mailing list