# [Numpy-discussion] Does x[True] trigger basic or advanced indexing?

Joe solarjoe at posteo.org
Thu Dec 14 07:27:08 EST 2017

```Hello,
thanks for you feedback.

Sorry, if thie question is stupid and the case below does not make
sense.
I am just trying to understand the logic.
For

x = np.random.rand(2,3)

x[True]
x[(True,)]

or

x[False]
x[(False,)]

where True and False are not arrays,
it will pick the first or second row.

Is this basic indexing then with one the rules
- obj is an integer
- obj is a tuple of slice objects and integers.
?

Am 13.12.2017 21:49 schrieb Eric Wieser:
> Increasingly, NumPy does not considers booleans to be integer types,
> and indexing is one of these cases.
>
> So no, it will not be treated as a tuple of integers, but as a 0d mask
>
> Eric
>
> On Wed, 13 Dec 2017 at 12:44 Joe <solarjoe at posteo.org> wrote:
>
>> Hi,
>>
>> yet another question.
>>
>> I looked through the indexing rules in the
>> documentation but I count not find which one
>> applies to x[True] and x[False]
>>
>> that might e.g result from
>>
>> import numpy as np
>> x = np.array(3)
>> x[x>5]
>> x[x<1]
>> x[True]
>> x[False]
>>
>> x = np.random.rand(2,3)
>> x[x>5]
>> x[x<1]
>> x[True]
>> x[False]
>>
>> I understood that they are equivalent to
>>
>> x[(False,)]
>>
>> I tested it and it looks like advanced indexing,
>> but I try to unterstand the logic behind this,
>> if there is any :)
>>
>> In x[x<1] the x<1 is a mask and thus I guess it is a
>> "tuple with at least one sequence object or ndarray (of data type
>> integer or bool)", right?
>>
>> Or will x[True] trigger basic indexing as it is "a tuple of
>> integers"
>> because True will be converted to Int?
>>
>> Cheers,
>> Joe
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion at python.org
>> https://mail.python.org/mailman/listinfo/numpy-discussion 
>
>