[Numpy-discussion] take not respecting masked arrays?

Pierre GM pgmdevlist at gmail.com
Mon Mar 1 01:58:02 EST 2010

On Mar 1, 2010, at 1:02 AM, Peter Shinners wrote:
>> Here is the code as I would like it to work. 
> http://python.pastebin.com/CsEnUrSa
> import numpy as np
> values = np.array((40, 18, 37, 9, 22))
> index = np.arange(3)[None,:] + np.arange(5)[:,None]
> mask = index >= len(values)
> maskedindex = np.ma.array(index, mask=mask)
> lookup = np.ma.take(values, maskedindex)
> # This fails with an index error, but illegal indices are masked.

OK, but this doesn't even work on a regular ndarray: np.take(values, index) raises an IndexError as well. Not much I can do there, then.

> # It succeeds when mode="clip", but it does not return a masked array.
> print lookup

Oh, I get it... The problem is that we use `take` on a ndarray (values) with a masked array as indices (maskedindex). OK, I could modify some of the mechanics so that a masked array is output even if a ndarray was parsed.
Now, about masked indices: OK, you're right, the result should be masked accordingly. Can you open a ticket, then ?

More information about the NumPy-Discussion mailing list