On Do, 2016-08-25 at 10:36 -0400, Joseph Fox-Rabinovitz wrote:
This issue recently came up on Stack Overflow: http://stackoverflow.c om/questions/39145795/masking-a-series-with-a-boolean-array. The poster attempted to index an ndarray with a pandas boolean Series object (all False), but the result was as if he had indexed with an array of integer zeros.
Can someone explain this behavior? I can see two obvious possibilities: ndarray checks if the input to __getitem__ is of exactly the right type, not using instanceof. pandas actually uses a wider datatype than boolean internally, so indexing with the series is in fact indexing with an integer array.
You are overthinking it ;). The reason is quite simply that the logic used to be:
* Boolean array? -> think about boolean indexing. * Everything "array-like" (not caught earlier) -> convert to `intp` array and do integer indexing.
Now you might wonder why, but probably it is quite simply because boolean indexing was tagged on later.
In my attempt to reproduce the poster's results, I got the following warning: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index This indicates that the issue is probably #1 and that a fix is already on the way. Please correct me if I am wrong. Also, where does the code for ndarray.__getitem__ live? Thanks, -Joe
NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion