Kilku użytkowników pytało o szybkość lub zużycie pamięci w nawijaczach obrazów w trybie numpy lub scipy [1, 2, 3, 4]. Z odpowiedzi i mojego doświadczenia z Numpy, wierzę, że może to być poważnym brakiem numpy w porównaniu do Matlab lub IDL.Najszybszy splot 2D lub filtr obrazu w języku Python
Żadna z dotychczasowych odpowiedzi nie odniosła się do ogólnego pytania, więc oto jest: "Jaka jest najszybsza metoda obliczania splotów 2D w Pythonie?" Wspólne moduły python to uczciwa gra: numpy, scipy i PIL (inne?). W celu przeprowadzenia trudnego porównania chciałbym zaproponować następujące zasady:
- Macierze wejściowe mają odpowiednio 2048 x 2048 i 32 x 32.
- Zmienność pojedyncza lub podwójna zmiennoprzecinkowa są dopuszczalne.
- Czas spędzony na przekształceniu macierzy wejściowej w odpowiedni format nie jest zliczany - wystarczy krok splotu.
- Wymiana matrycy wejściowy ze swoim wyjściem jest dopuszczalna (czy jakiekolwiek wsparcie biblioteka Pythona, który?)
- bezpośrednie DLL wzywa do wspólnych bibliotek C są w porządku - Lapack lub scalapack
- PyCUDA jest prosto. Używanie niestandardowego sprzętu GPU nie jest sprawiedliwe.
„Wymiana matrycy wejściowy z wyjściem jest dopuszczalna (czy jakiekolwiek wsparcie biblioteka Pythona, który?)” Na co warto, najbardziej numpy i funkcje scipy zrobić ... –
nie widzę żadnej wzmianki, że w dokumentach convolve: http://docs.scipy.org/doc/numpy/reference/generated/numpy.convolve.html Czy brakuje mi czegoś? –
Nie jest obsługiwane dla convolve numpy, ale jest dla 'scipy.ndimage.convolve'. http://www.scipy.org/SciPyPackages/Ndimage Również większość funkcji numpy (np. 'sqrt',' mul', 'add') pobiera parametr out. Możesz zrobić 'np.sqrt (x, x)', aby wykonać sqrt w miejscu. –