Mam tablicę. Poprawne wartości nie są równe zeru (dodatnie lub ujemne). Chcę znaleźć minimum i maksimum w tablicy, które nie powinno uwzględniać zer. Na przykład, jeśli liczby są tylko ujemne. Zero będzie problematyczne.Znajdź min/max z wyłączeniem zer w tablicy numpy (lub krotki) w pytonie
Odpowiedz
Jak o:
import numpy as np
minval = np.min(a[np.nonzero(a)])
maxval = np.max(a[np.nonzero(a)])
gdzie a
ma swoją tablicę.
Prostym sposobem byłoby użycie rozumienia listy, aby wykluczyć zera.
>>> tup = (0, 1, 2, 5, 2)
>>> min([x for x in tup if x !=0])
1
OP szuka rozwiązania dla numpy tablic, a nie pythonów. Tak jak w drugim komentarzu, nie zamierzam mówić, ale to nie ma znaczenia w przypadku numpy array. – JoshAdel
Tytuł pytania brzmi "w tablicy numpy (lub krotki)". – Wilduck
nie widziałem krotki w tytule i czytałem tylko pytanie, które mówi tablica. Stoję poprawiony +1. Skoczyłem na ciebie (i na drugą odpowiedź), ponieważ ludzie publikują rozwiązania numipowych pytań traktując je tak, jakby były listami numpy, których nie są. Jest to osobista gra dla zwierząt domowych, ponieważ nieostrożne rozwiązanie jest często szalenie bardziej wydajne. – JoshAdel
Można użyć wyrażenia generatora odfiltrować zer:
array = [-2, 0, -4, 0, -3, -2]
max(x for x in array if x != 0)
Myślę, że OP mówi o numpy tablice, a nie listy Pythona. Jest różnica, chociaż twoje rozwiązanie jest poprawne na później. Nie zamierzam przegłosować, ale tylko dlatego, że wiesz. – JoshAdel
Ahh, właśnie zobaczyłem tablicę, nie widziałem tagu numpy. –
Jeśli można wybrać „nieważny” wartość w macierzy, to lepiej jest użyć nan
zamiast 0
:
>>> a = numpy.array([1.0, numpy.nan, 2.0])
>>> numpy.nanmax(a)
2.0
>>> numpy.nanmin(a)
1.0
Jeśli nie jest to możliwe, można użyć maski tablicy:
>>> a = numpy.array([1.0, 0.0, 2.0])
>>> ma = numpy.ma.masked_equal(a, 0.0, copy=False)
>>> ma.max()
2.0
>>> ma.min()
1.0
W porównaniu z Josh's answer using advanced indexing ma to tę zaletę, że unika tworzenia kopii tablicy.
co to jest ... nie jest to kolejna kopia? – Shan
+1 Zamaskowane tablice są kolejnym ładnym (i często niedostatecznie wykorzystywanym) rozwiązaniem – JoshAdel
@Sven: kiedy robię 'ma.base is a' otrzymuję false, więc nie wygląda to tak, jakby' ma' było po prostu widokiem 'a 'i gdzieś jest kopia pamięci. Czy testuję to w niewłaściwy sposób? – JoshAdel
Oto kolejny sposób maskowania, który, jak sądzę, jest łatwiejszy do zapamiętania (chociaż kopiuje tablicę). W przypadku, w momencie, to idzie tak:
>>> import numpy
>>> a = numpy.array([1.0, 0.0, 2.0])
>>> ma = a[a != 0]
>>> ma.max()
2.0
>>> ma.min()
1.0
>>>
To uogólnia się do innych określeń takich jak> 0, numpy.isnan (a) ... I można połączyć z maski standardowych operatorów (+ oznacza OR, * oznacza ORAZ - oznacza NIE) np .:
# Identify elements that are outside interpolation domain or NaN
outside = (xi < x[0]) + (eta < y[0]) + (xi > x[-1]) + (eta > y[-1])
outside += numpy.isnan(xi) + numpy.isnan(eta)
inside = -outside
xi = xi[inside]
eta = eta[inside]
- 1. Zawijanie tablicy numpy w pytonie
- 2. Lista zer w pytonie
- 3. Znalezienie kolejnych zer w numpy tablicy
- 4. Zerowanie/usunięcie zer z tablicy numpy
- 5. 4 wymiarowa tablica zer w pytonie
- 6. Znajdź indeksy listy wartości w tablicy numpy
- 7. Znajdź wiele wartości w tablicy Numpy
- 8. Znajdź pasujące wiersze w dwuwymiarowej tablicy numpy
- 9. Normalizacja MinMax w scala
- 10. znajdź vs w działaniu w pytonie ciągu
- 11. Zmiana kształtu tablicy w NumPy
- 12. Usuń wszystkie zer z tablicy
- 13. Grupa obciąż lub minut w numpy tablicy
- 14. Znajdź indeksy elementów równych zeru w tablicy NumPy
- 15. Zliczanie wystąpień kolumn w tablicy numpy
- 16. Zapisywanie i ładowanie macierzy Numpy w pytonie
- 17. Jak zadeklarować tablicę zer w pythonie (lub tablicy o określonym rozmiarze)
- 18. Usuwanie wierszy z duplikatów w tablicy numpy
- 19. Cython/numpy Typ tablicy
- 20. Znajdź subdokument w tablicy z mongodb
- 21. Tworzenie słownika z tablicy numpy
- 22. zastąpić zera w numpy tablicy z wartością mediany
- 23. Znajdź ciąg w dwuwymiarowej tablicy
- 24. Lista list w tablicy numpy
- 25. Liczba wierszy w tablicy numpy
- 26. indeks elementu tablicy w numpy
- 27. Numpy - krojenie wektora z 2 wierszy lub kolumn z tablicy
- 28. Znajdź najczęściej ciąg w tablicy
- 29. Czy istnieje prosty sposób na znalezienie zer zer tablicy w Fortran?
- 30. Python przekonwertować krotki do tablicy
Jakie jest twoje pytanie? Co próbujesz? Jak to się nie udało? –