Numpy / Python: iteración de matriz sin bucle for

Así que es otra pregunta de matriz n-dimensional: quiero poder comparar cada valor en una matriz n-dimensional con sus vecinos. Por ejemplo, si a es la matriz que es bidimensional, quiero poder verificar:

a[y][x]==a[y+1][x]

para todos los elementos. Así que básicamente compruebe todos los vecinos en todas las dimensiones. Ahora mismo lo estoy haciendo a través de:

for x in range(1,a.shape[0]-1):
   do.something(a[x])

Se utiliza la forma de la matriz, por lo que no me encuentro con un índice fuera de rango en los bordes. Entonces, si quiero hacer algo como esto en n-D para todos los elementos de la matriz, necesito n for-loops que parecen estar desordenados. ¿Hay una manera de hacerlo a través de rebanar? Algo como a == a [:, - 1 ,:] o ¿estoy entendiendo esto completamente mal? ¿Y hay una manera de decirle a una porción que se detenga al final? ¿O habría otra idea de hacer que las cosas funcionen de otra manera? Arrays enmascarados? Saluda Joni