[Numpy-discussion] boolean indexing change

Nathaniel Smith njs at pobox.com
Thu Jun 14 17:38:26 EDT 2012


On Mon, Jun 11, 2012 at 1:31 AM, Travis Oliphant <travis at continuum.io> wrote:
> It is unfortunate that this was committed to master.  This should be backed out and is a blocker for 1.7.   Can someone help me identify which commit made the change?
>
> This is a rather significant change and changes the documented behavior of NumPy substantially.   This should definitely not occur in 1.7
>
> The documented behavior (Guide to NumPy, pg.  84) of boolean indexing is that
>
>   x[obj] is equivalent to x[obj.nonzero()]
>
> The shape of advanced indexing is not restricted to the shape of of x.      I suspect this change was made when it was presumed the next release would be 2.0 and such behavior could presumably be changed somewhat?  But, was there a discussion about this?

I don't see the commit where the change was made (the release notes
were updated at some other time), but that error message seems to come
from nditer. So I suspect that this change was part of the rewrite of
indexing, and might not be fixable with a small local patch -- I don't
think nditer has a way to iterate over a boolean array while filling
in False once you go past the end of the array...

If we're willing to deprecate this behavior then a temporary
workaround measure might be enough. Like checking for such arrays and
copying them into larger arrays before using them in indexing. Or
maybe that would be fine in general, I dunno. Mark, any thoughts?

-N



More information about the NumPy-Discussion mailing list