Mam dużą trójwymiarową tablicę w numpy (powiedzmy rozmiar 100x100x100). Chciałbym iterować po prostu jego części wiele razy (około 70% elementów) i mam macierz logiczną, która ma ten sam rozmiar i określa, czy element powinien mieć operację wykonaną czy nie.Jak przyspieszyć iterację na części tablicy numpy
My obecny sposób jest najpierw utworzyć macierz „coords” kształtu (n = 3), który zawiera wszystkie współrzędnymi na ich wykonanie operacji, a następnie
for i in np.arange(many_iterations):
for j in coords:
large_array[j] = do_something(large_array[tuple(j)])
Byłoby w rzeczywistości lepiej aby ocenić całą tablicę i dodać dodatkową operację w pętli, aby przetestować tablicę logiczną (pamiętaj, że ocena prawdy jest wykonywana wielokrotnie razy, a nie raz). Moja myśl była, że opłacać w tym przypadku byłoby pozbycie się pętle
large_array = do_something(large_array if condition True)
Jak będzie to ostatnia linia być wykonane do pracy w tym przypadku?
W zależności od tego, czym jest 'do_something', możesz być w stanie zrobić' large_array [boolean_array] = do_something (large_array [boolean_array]) 'lub coś jeszcze krótszego. –
Myślę, że twój sentyment jest właściwy, może to być dla ciebie korzystne, aby wykonać operację na całej tablicy, a następnie użyć czegoś takiego jak "numpy.where". –