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.