Numpy elegante indexación y asignación

Normalmente numpy obliga a que coincidan el lado izquierdo y derecho de una tarea, por ejemplo, si lo hagoa[:] = b, b debe tener la misma forma o transmitirse a la misma forma quea. Pero parece haber una excepción a esa regla:

>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = a.copy()
>>> a[[0,1,2]] = b[::2]
>>> a
array([0, 2, 4, 3, 4, 5, 6, 7, 8, 9])
>>> a[np.arange(10)] = b[:2]
>>> a
array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1])

Parece que solo funciona con matrices 1d y solo si hay una indexación elegante en el lado izquierdo de la asignación, pero no he podido encontrar documentación para este comportamiento en ninguna parte. ¿Está documentado este comportamiento, si es así, dónde, y también alguien puede dar un ejemplo de cuándo podría ser útil?

Actualizar

Parece que el tipo de aplanador numpy también se comporta de esta manera, ¿hay alguna conexión entre el aplanador y la indexación elegante que no conozco?

>>> a.flat = [10,11]
>>> a
array([10, 11, 10, 11, 10, 11, 10, 11, 10, 11])
>>> a.flat[:] = [2,3,4]
>>> a
array([2, 3, 4, 2, 3, 4, 2, 3, 4, 2])
>>> a.flat = range(100)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

Respuestas a la pregunta(2)

Su respuesta a la pregunta