indexación en mgrid de numpy

yo suelonumpy.mgrid para generar "matrices de índices de coordenadas"

y, x = np.mgrid[0:3, 0:2]
print x
array([[0, 1],
       [0, 1],
       [0, 1]])

En muchas situaciones, tomo parte de estos arreglos (por ejemplo,x[0, :]) y descartar el resto de los datos. A veces, estos cortes son mucho más pequeños que los arreglos originales, que son costosos de calcular (es decir,np.mgrid[0:512, 0:512, 0:512]). ¿Proporciona numpy un equivalente a[coord[view] for coord in np.mgrid[0:512, 0:512, 0:512] ¿Eso no genera grandes matrices intermedias?

Me doy cuenta de que la solución es trivial para el corte.[0,:], pero estoy buscando una solución general que maneje cualquier forma válida de indexar matrices numpy

Editar

Algunos han pedido ejemplos específicos para lo queview podría parecerse a Idealmente, espero una solución general que maneje cualquier forma válida de indexar un ndarray. Aquí hay algunos ejemplos específicos para la matriz 3x2 de arriba:

1)view = (1, slice(None, None, 2))

2)view = (np.array([0,1]), np.array([0, 1]))

3)view = np.array([[False, False], [False, True], [False, False]])

Y estoy buscando una función como

def mgrid_with_view(array_shape, view)
    ...

Eso devuelve el equivalente de[o[view] for o in np.indices(array_shape)] Sin computación ni memoria innecesaria.

Respuestas a la pregunta(1)

Su respuesta a la pregunta