Reorganizar los elementos de la matriz con Numpy

Tengo una matriz NumPy que he simplificado para ejemplificar:

       a  b  c  d  e  f 
A =  [[0, 1, 2, 3, 4, 5],
 b    [1, 0, 3, 4, 5, 6],
 c    [2, 3, 0, 5, 6, 7],
 d    [3, 4, 5, 0, 7, 8],
 e    [4, 5, 6, 7, 0, 9],
 f    [5, 6, 7, 8, 9, 0]]

donde el número en las "intersecciones" es importante, pero su orden no es correcto. Quiero reorganizar las filas y columnas de modo que el nuevo orden sea [a, d, b, e, c, f] pero este valor que estoy llamando "la intersección" es el mismo.

A continuación he empezado a transformar la matriz como quiero. Llenar la fila 'e' implica mirar las intersecciones anteriores para (e, a) (= 4), luego (e, d) (= 7), luego (e, b) (= 5), (e, e) , (e, c), y (e, f)

       a  d  b  e  c  f
A1=  [[0, 3, 1, 4, 2, 5],
 d    [3, 0, 4, 7, 5, 8],
 b    [1, 4, 0, 5, 3, 6],  
 e    [4, 7, 5, 

¿Puede alguien sugerir cómo reorganizar mi matriz de esta manera?

Respuestas a la pregunta(2)

Su respuesta a la pregunta