Test of numpy-array alleen nullen bevat

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 term a==0.)
  • Het is ook sneller dan numpy.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.

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)

Other episodes