Indexação NumPy: transmitindo com matrizes booleanas

Relacionado aessa questão, Me deparei com um comportamento de indexação por meio de matrizes booleanas e de transmissão que eu não entendo. Sabemos que é possível indexar um array NumPy em 2 dimensões usando índices inteiros e difusão. Isso é especificado nodocs:

a = np.array([[ 0,  1,  2,  3],
              [ 4,  5,  6,  7],
              [ 8,  9, 10, 11]])

b1 = np.array([False, True, True])
b2 = np.array([True, False, True, False])

c1 = np.where(b1)[0]  # i.e. [1, 2]
c2 = np.where(b2)[0]  # i.e. [0, 2]

a[c1[:, np.newaxis], c2]  # or a[c1[:, None], c2]

array([[ 4,  6],
       [ 8, 10]])

No entanto, o mesmo não funciona para matrizes booleanas.

a[b1[:, None], b2]

IndexError: too many indices for array

A alternativanumpy.ix_ funciona para ambos inteirose Matrizes booleanas. Isso parece ser porqueix_ realiza manipulação específica para matrizes booleanas para garantir tratamento consistente.

assert np.array_equal(a[np.ix_(b1, b2)], a[np.ix_(c1, c2)])

array([[ 4,  6],
       [ 8, 10]])

Então, minha pergunta é: por que a transmissão funciona com números inteiros, mas não com matrizes booleanas? Esse comportamento está documentado? Ou estou entendendo mal uma questão mais fundamental?

questionAnswers(1)

yourAnswerToTheQuestion