We initialiseren een numpy-array met nullen zoals hieronder:
np.zeros((N,N+1))
Maar hoe controleren we of alle elementen in een gegeven n*n numpy array-matrix nul is.
De methode hoeft alleen een True te retourneren als alle waarden inderdaad nul zijn.
Antwoord 1, autoriteit 100%
De andere antwoorden die hier worden gepost, zullen werken, maar de duidelijkste en meest efficiënte functie om te gebruiken is numpy.any()
:
>>> all_zeros = not np.any(a)
of
>>> all_zeros = not a.any()
- Dit heeft de voorkeur boven
numpy.all(a==0)
omdat het minder RAM gebruikt. (Het vereist niet de tijdelijke array die is gemaakt door de terma==0
.) Het is ook sneller dannumpy.count_nonzero(a)
omdat het onmiddellijk kan terugkeren wanneer het eerste niet-nul element is gevonden.- Bewerken:Zoals @Rachel in de opmerkingen aangaf, gebruikt
np.any()
niet langer “kortsluiting”-logica, dus je zult geen snelheidsvoordeel voor kleine arrays.
- Bewerken:Zoals @Rachel in de opmerkingen aangaf, gebruikt
Antwoord 2, autoriteit 42%
Bekijk numpy.count_nonzero.
>>> np.count_nonzero(np.eye(4))
4
>>> np.count_nonzero([[0,1,7,0,0],[3,0,0,2,19]])
5
Antwoord 3, autoriteit 31%
Ik zou np.all hier gebruiken, als je een array hebt a:
>>> np.all(a==0)