Wierzcie lub nie, po wyprofilowaniu mojego obecnego kodu powtarzające się operacje odwracania tablicy numpy zjadły ogromną część czasu pracy. To, co mam teraz, to wspólna metoda oparta na widoku:
reversed_arr = arr[::-1]
Czy jest jakiś inny sposób, aby zrobić to bardziej efektywnie, czy to tylko złudzenie mojej obsesji na punkcie nierealistycznego numpicznego wykonania?
arr
jest tablicą numpy.
f2py
jest twoim przyjacielem! Często warto pisać krytyczne pod względem wydajności części algorytmu (szczególnie w obliczeniach naukowych) w innym języku i wywoływać go z języka python. Powodzenia!
arr[::-1]
: github.com/numpy/numpy/blob/master/numpy/lib/twodim_base.py . Szukać def flipud
. Funkcja ma dosłownie cztery linie.
arr[::-1]
po prostu zwraca odwrócony widok. Jest tak szybki, jak to tylko możliwe, i nie zależy od liczby elementów w tablicy, ponieważ po prostu zmienia kroki. Czy to, co cofasz, faktycznie jest tablicą liczb liczbowych?