indeksowanie do mgrid numpy

używamnumpy.mgrid wygenerować „tablice indeksów współrzędnych”

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

W wielu sytuacjach biorę kawałek przez te tablice (np.x[0, :]) i odrzuć pozostałe dane. Czasami te plasterki są znacznie mniejsze niż oryginalne tablice, które są drogie w obliczeniach (tj.np.mgrid[0:512, 0:512, 0:512]). Czy numpy jest odpowiednikiem[coord[view] for coord in np.mgrid[0:512, 0:512, 0:512] który nie generuje dużych macierzy pośrednich?

Zdaję sobie sprawę, że rozwiązanie jest banalne dla wycinka[0,:], ale szukam ogólnego rozwiązania, które obsługuje każdy prawidłowy sposób indeksowania tablic numpy

Edytować

Niektórzy pytali o konkretne przykładyview może wyglądać. W idealnej sytuacji mam nadzieję na ogólne rozwiązanie, które obsługuje każdy prawidłowy sposób indeksowania ndarray. Oto kilka konkretnych przykładów powyższej tablicy 3x2:

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]])

I szukam takiej funkcji

def mgrid_with_view(array_shape, view)
    ...

To zwraca równowartość[o[view] for o in np.indices(array_shape)] bez zbędnych obliczeń lub pamięci.

questionAnswers(1)

yourAnswerToTheQuestion