python - que - Prueba si la matriz numpy contiene solo ceros
python matrices tutorial (4)
Inicializamos una matriz numpy con ceros como abajo:
np.zeros((N,N+1))
Pero, ¿cómo verificamos si todos los elementos en una matriz n * n numpy array dada son cero?
El método solo necesita devolver un valor True si todos los valores son de hecho cero.
Las otras respuestas publicadas aquí funcionarán, pero la función más clara y eficiente para usar es numpy.any()
:
>>> all_zeros = not np.any(a)
o
>>> all_zeros = not a.any()
- Esto se prefiere sobre
numpy.all(a==0)
porque usa menos RAM. (No requiere la matriz temporal creada por el término aa==0
). - Además, es más rápido que
numpy.count_nonzero(a)
porque puede regresar inmediatamente cuando se ha encontrado el primer elemento distinto de cero.
Mira numpy.count_nonzero .
>>> np.count_nonzero(np.eye(4))
4
>>> np.count_nonzero([[0,1,7,0,0],[3,0,0,2,19]])
5
Si está probando todos los ceros para evitar una advertencia en otra función numpy y luego ajusta la línea en una prueba, excepto el bloque, ahorrará tener que hacer la prueba de ceros antes de la operación que le interesa, es decir,
try: # removes output noise for empty slice
mean = np.mean(array)
except:
mean = 0
Usaría np.all aquí, si tienes una matriz a:
>>> np.all(a==0)