NumPy ma efektywną funkcję/metodę nonzero()
do identyfikowania indeksów niezerowych elementów w obiekcie ndarray
. Jaki jest najskuteczniejszy sposób uzyskania indeksów elementów, które mają wartość zero?Znajdź indeksy elementów równych zeru w tablicy NumPy
Odpowiedz
numpy.where() jest moim ulubionym.
>>> x = numpy.array([1,0,2,0,3,0,4,5,6,7,8])
>>> numpy.where(x == 0)[0]
array([1, 3, 5])
Można wyszukiwać każdych warunkach skalarnego z:
>>> a = np.asarray([0,1,2,3,4])
>>> a == 0 # or whatver
array([ True, False, False, False, False], dtype=bool)
Który będzie oddać tablicę jako logiczną maski warunku.
Możesz użyć tego, aby uzyskać dostęp do elementów zerowych: 'a [a == 0] = epsilon' –
Jeśli pracujesz z jednowymiarowej tablicy znajduje się cukier syntaktyczny:
>>> x = numpy.array([1,0,2,0,3,0,4,5,6,7,8])
>>> numpy.flatnonzero(x == 0)
array([1, 3, 5])
To działa dobrze tak długo, jak mam tylko jeden warunek. Co jeśli chcę wyszukać "x == numpy.array (0,2,7)"? Wynik powinien być tablicą ([1,2,3,5,9]). Ale jak mogę to zdobyć? – MoTSCHIGGE
Można to zrobić za pomocą: 'numpy.flatnonzero (numpy.logical_or (numpy.logical_or (x == 0, x == 2), x == 7))' – Dusch
Można również użyć nonzero()
używając go na logicznej maski warunku, ponieważ False
jest również rodzajem zero.
>>> x = numpy.array([1,0,2,0,3,0,4,5,6,7,8])
>>> x==0
array([False, True, False, True, False, True, False, False, False, False, False], dtype=bool)
>>> numpy.nonzero(x==0)[0]
array([1, 3, 5])
To robi dokładnie tak samo jak sposób mtrw
„s, ale jest to bardziej związane z pytaniem;)
import numpy as np
x = np.array([1,0,2,3,6])
non_zero_arr = np.extract(x>0,x)
min_index = np.amin(non_zero_arr)
min_value = np.argmin(non_zero_arr)
Jest np.argwhere
,
import numpy as np
arr = np.array([[1,2,3], [0, 1, 0], [7, 0, 2]])
np.argwhere(arr == 0)
która zwraca wszystkie znalezione indeksy jako wiersze:
array([[1, 0], # Indices of the first zero
[1, 2], # Indices of the second zero
[2, 1]], # Indices of the third zero
dtype=int64)
- 1. Znajdź indeksy listy wartości w tablicy numpy
- 2. indeksy okrągłych numpy tablicy
- 3. Znajdź wiele wartości w tablicy Numpy
- 4. numpy - liczba równych macierzy
- 5. Znajdź pasujące wiersze w dwuwymiarowej tablicy numpy
- 6. Znajdź indeksy elementów, które pasują do danego warunku.
- 7. Jak zwracać indeksy wartości między dwiema liczbami w tablicy numpy
- 8. Znajdź indeksy wspólnych wartości w dwóch tablicach.
- 9. Znajdź indeksy nieparzystych liczb w wektorze całkowitej
- 10. pytonic sposobem usuwania elementów z tablicy numpy
- 11. Uśrednianie dla wszystkich n elementów tablicy numpy
- 12. Znajdź min/max z wyłączeniem zer w tablicy numpy (lub krotki) w pytonie
- 13. Znajdź i wyszukaj podwójne w tablicy i zwróć jej indeksy? Czy jest to metoda zamiany elementów tablicy?)
- 14. Pobierz indeksy n maks. W tablicy java
- 15. Jak zwrócić wszystkie minimalne indeksy w numpy
- 16. numpy duplikaty elementów
- 17. Znajdź indeksy wielu maksimów w wektorze
- 18. Znajdź indeksy z listy w eliksiru
- 19. Sprawdź, czy każdy element w tablicy numpy znajduje się w innej tablicy.
- 20. Znajdź indeksy elementu na liście zagnieżdżonej?
- 21. szybki sposób znaleźć największe N elementów w tablicy numpy
- 22. Uzyskiwanie indeksów kilku elementów w tablicy NumPy naraz
- 23. Znajdź maksymalną sumę elementów w tablicy (z przekręceniem)
- 24. Łączenie elementów (wklejanie) w oparciu o indeksy
- 25. evalution porównania tablicy numpy
- 26. Uzyskaj indeksy tablicy po sortowaniu?
- 27. LINQ znaleźć indeksy tablicy wartości
- 28. Re indeksy tablicy klawisze numeryczne
- 29. Podział ciąg do tablicy ciągów równych długości
- 30. Identyfikacja sąsiednich regionów w tablicy numpy 2D
Próbuję pamiętać o Pythonie. Dlaczego 'where()' zwraca krotkę? 'numpy.where (x == 0) [1]' jest poza zakresem. do czego jest sprzężona tablica wskaźników? – Rhubarb
@Zhubarb - Większość zastosowań indeces to krotki - 'np.zeros ((3,))' na przykład do utworzenia wektora 3-długiego. Podejrzewam, że jest to łatwe do analizowania params. W przeciwnym razie coś takiego jak 'np.zeros (3,0, dtype = 'int16')' versus 'np.zeros (3,3,3, dtype = 'int16')' byłoby denerwujące do wdrożenia. – mtrw
no. 'where' zwraca krotkę' ndarray's, z których każdy odpowiada wymiarowi danych wejściowych. w tym przypadku wejście jest tablicą, więc wyjście jest '' 1-krotnością'. Jeśli x byłaby macierzą, byłaby to "2-krotna", i tak na –