Iterando sobre los primeros ejes d de la matriz numpy

Me dan una matriz con un número arbitrario de ejes, y quiero repetir, digamos la primera 'd' de ellos. ¿Cómo hago esto?

Inicialmente pensé que haría una matriz que contiene todos los índices que quiero recorrer, usando

i = np.indices(a.shape[:d])
indices = np.transpose(np.asarray([x.flatten() for x in i]))
for idx in indices:
    a[idx]

Pero aparentemente no puedo indexar una matriz como esa, es decir, usar otra matriz que contenga el índice.

Respuestas a la pregunta(3)

Su respuesta a la pregunta