Próbuję znaleźć najszybszy sposób znalezienia pierwszej niezerowej wartości dla każdego wiersza dwuwymiarowej posortowanej tablicy. Technicznie jedynymi wartościami w tablicy są zera i jedynki, które są "sortowane".Znajdowanie pierwszej niezerowej wartości wzdłuż osi sortowanej dwuwymiarowej tablicy numpy
Na przykład tablica może wyglądać następująco:
V =
0 0 0 1 1 1 1
0 0 0 1 1 1 1
0 0 0 0 1 1 1
0 0 0 0 0 0 1
0 0 0 0 0 0 1
0 0 0 0 0 0 1
0 0 0 0 0 0 0
może używać argmax funkcji
argmax(v, axis=1))
znalezienie, kiedy zmienia się od zera do jednej , ale uważam, że w każdym wierszu przeprowadzono by wyczerpujące wyszukiwanie. Moja macierz będzie miała rozsądne rozmiary (~ 2000x2000). Czy argmax nadal będzie lepszy od zwykłego wyszukiwania dla każdego wiersza w pętli for, czy jest lepsza alternatywa?
Ponadto, tablica zawsze będzie taka, że pierwsza pozycja dla wiersza będzie zawsze> = pierwsza pozycja w rzędzie nad tym rzędem (ale nie ma gwarancji, że znajdzie się jedna z nich) kilka ostatnich wierszy). Mógłbym to wykorzystać za pomocą pętli for i "początkowej wartości indeksu" dla każdego wiersza równej pozycji pierwszego 1 z poprzedniego wiersza, ale czy mam rację sądząc, że funkcja numpy argmax nadal będzie przewyższać pętlę zapisaną w pythonie .
Chciałbym po prostu porównać te alternatywy, ale długość krawędzi tablicy może się nieco zmienić (od 250 do 10 000).
bym bardzo dużo oczekują, że funkcja argmax będzie szybsza. Jeśli jest to krytyczne z punktu widzenia wydajności, spróbuj wpisać rozszerzenie w C – SudoNhim