2013-08-23 12 views
39

My zainicjować tablicę z numpy zer jak poniżej:testu jeśli numpy tablica zawiera same zera

np.zeros((N,N+1)) 

Ale w jaki sposób sprawdzić, czy wszystkie elementy w dany n * n macierzy tablicy numpy wynosi zero.
Metoda wystarczy zwrócić wartość True, jeśli wszystkie wartości są rzeczywiście zerowe.

Odpowiedz

28

Zapoznaj się z numpy.count_nonzero.

>>> np.count_nonzero(np.eye(4)) 
4 
>>> np.count_nonzero([[0,1,7,0,0],[3,0,0,2,19]]) 
5 
+3

pewnością chcesz 'nie np.count_nonzero (np.eye (4))' 'true' wrócić tylko wtedy, gdy wszystkie wartości 0. –

28

użyję np.all tutaj, jeśli masz tablicę a:

>>> np.all(a==0) 
+0

mi się podoba ta odpowiedź sprawdza non wartości zerowych oraz . Na przykład można sprawdzić, czy wszystkie elementy w tablicy są takie same, wykonując 'np.all (a == a [0])'. Wielkie dzięki! –

84

innych odpowiedzi zamieszczone tutaj będzie działać, ale najczystsze i najbardziej efektywne w użyciu funkcja jest numpy.any():

>>> all_zeros = not np.any(a) 

lub

>>> all_zeros = not a.any() 
  • Jest to preferowane w stosunku do numpy.all(a==0), ponieważ wykorzystuje mniej pamięci RAM. (Nie wymaga tymczasowej tablicy utworzonej przez termin a==0).
  • Ponadto jest szybszy niż numpy.count_nonzero(a), ponieważ może natychmiast wrócić, gdy zostanie znaleziony pierwszy element niezerowy.
+0

Nie jestem pewien, czy zgadzam się, że jest to najczystsze rozwiązanie. – Akavall

-3

Jeśli testujesz wszystkie zera, aby uniknąć ostrzeżenia o innej funkcji numpy, a następnie owijania linii w próbie, z wyjątkiem bloku będzie zapisywanie konieczności wykonania testu zer przed operacją, która Cię interesuje, tj.

try: # removes output noise for empty slice 
    mean = np.mean(array) 
except: 
    mean = 0