ndexación @NumPy: difusión con matrices booleanas

Relacionado conesta pregunt, Me encontré con un comportamiento de indexación a través de matrices booleanas y difusión que no entiendo. Sabemos que es posible indexar una matriz NumPy en 2 dimensiones utilizando índices enteros y difusión. Esto se especifica en la docs:

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]])

Sin embargo, lo mismo no funciona para las matrices booleanas.

a[b1[:, None], b2]

IndexError: too many indices for array

La alternativanumpy.ix_ funciona para ambos enteros Matrices booleanas. Esto parece ser porqueix_ realiza una manipulación específica para matrices booleanas para garantizar un tratamiento consistente.

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

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

Entonces mi pregunta es: ¿por qué la transmisión funciona con enteros, pero no con matrices booleanas? ¿Está documentado este comportamiento? ¿O estoy malinterpretando un problema más fundamental?

Respuestas a la pregunta(1)

Su respuesta a la pregunta