Ваш массив состоит из:
0 1 2 3
4 5 6 7
8 9 10 11
Один из способов индексации - использование списка целых чисел, в котором указывается, какие строки / столбцы включать:
>>> i1 = [1,2]
>>> i2 = [0,2]
>>> a[i1,i2]
array([ 4, 10])
Значение: строка1 столбец 0, строка 2 столбец 2
Когда вы используете логические индексы, вы указываете, какие строки / столбцы включить, а какие нет:
>>> b1 = [False,True,True] # 0:no, 1:yes, 2:yes ==> [1,2]
>>> b2 = [True,False,True,False] # 0:yes, 1:no, 2:yes, 3:no ==> [0,2]
Как вы можетевидите, это эквивалентно i1
и i2
, показанным выше.Следовательно, a[b1,b2]
будет иметь тот же результат.
Обратите также внимание, что описанная выше операция возможна только потому, что оба значения b1
и b2
имеют одинаковое количество значений True
(поэтому они представляют двамассивы одинаковой длины при выражении в целочисленной форме).