[Numpy-discussion] take not respecting masked arrays?

Pierre GM pgmdevlist@gmail....
Mon Mar 1 00:58:02 CST 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