ndexação e atribuição extravagant

Normalmente, numpy força o lado esquerdo e direito de uma atribuição a corresponder, por exemplo, se eu fizera[:] = b, b deve ter a mesma forma ou transmitir para a mesma forma quea. Mas parece haver uma exceção a essa regra:

>>> 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 funcionar apenas com matrizes 1d e apenas se houver uma indexação sofisticada no lado esquerdo da atribuição, mas não consegui encontrar documentação para esse comportamento em nenhum lugar. Esse comportamento está documentado, se sim, onde e também alguém pode dar um exemplo de quando isso pode ser útil?

Atualizar

Parece que o tipo de flatiter numpy também se comporta dessa maneira; existe alguma conexão entre flatiter e indexação sofisticada que eu não conheço?

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