Numpy: Ordenar una matriz multidimensional por una matriz multidimensional

Perdóname si esto es redundante o super básico. Vengo a Python / Numpy desde R y me cuesta mucho mover las cosas en mi cabeza.

Tengo una matriz n dimensional que quiero ordenar usando otra matriz n dimensional de valores de índice. Sé que podría envolver esto en un bucle, pero parece que debería haber una forma numpyónica realmente concisa de vencer esto en la sumisión. Aquí está mi código de ejemplo para configurar el problema donde n = 2:

a1 = random.standard_normal(size=[2,5]) 
index = array([[0,1,2,4,3] , [0,1,2,3,4] ]) 

así que ahora tengo una matriz de 2 x 5 de números aleatorios y un índice de 2 x 5. He leído la ayuda paratake() alrededor de 10 veces, pero mi cerebro no lo está asimilando, obviamente.

Pensé que esto podría llevarme allí:

take(a1, index)

array([[ 0.29589188, -0.71279375, -0.18154864, -1.12184984,  0.25698875],
       [ 0.29589188, -0.71279375, -0.18154864,  0.25698875, -1.12184984]])

pero eso es claramente reordenar solo el primer elemento (supongo que debido al aplanamiento).

¿Alguna sugerencia sobre cómo llego desde donde estoy a una solución que ordena el elemento 0 de a1 por el elemento 0 del índice ... elemento n?

Respuestas a la pregunta(2)

Su respuesta a la pregunta