Wir initialisieren ein Numpy-Array mit Nullen wie folgt:
np.zeros((N,N+1))
Aber wie überprüfen wir, ob alle Elemente in einer gegebenen n * n numpy-Array-Matrix Null sind?
Die Methode muss nur ein True zurückgeben, wenn alle Werte tatsächlich Null sind.
not np.count_nonzero(np.eye(4))
zurückkehren ,True
nur wenn alle die Werte 0 sindDie anderen hier veröffentlichten Antworten funktionieren, aber die klarste und effizienteste Funktion ist
numpy.any()
:oder
numpy.all(a==0)
RAM- Vorzug bevorzugt . (Das durch dena==0
Begriff erstellte temporäre Array ist nicht erforderlich .)Außerdem ist es schneller alsnumpy.count_nonzero(a)
weil es sofort zurückkehren kann, wenn das erste Element ungleich Null gefunden wurde.np.any()
keine "Kurzschluss" -Logik mehr verwendet, sodass Sie für kleine Arrays keinen Geschwindigkeitsvorteil sehen.quelle
any
undall
tun nicht kurzschließen. Ich glaube, sie sind Zucker fürlogical_or.reduce
undlogical_and.reduce
. Vergleichen Sie miteinander und meinen Kurzschlussis_in
:all_false = np.zeros(10**8)
all_true = np.ones(10**8)
%timeit np.any(all_false) 91.5 ms ± 1.82 ms per loop
%timeit np.any(all_true) 93.7 ms ± 6.16 ms per loop
%timeit is_in(1, all_true) 293 ns ± 1.65 ns per loop
Ich würde hier np.all verwenden, wenn Sie ein Array haben a:
quelle
np.all(a==a[0])
. Vielen Dank!Wie eine andere Antwort sagt, können Sie Wahrheits- / Falschbewertungen nutzen, wenn Sie wissen, dass dies
0
das einzige Falschelement ist, das möglicherweise in Ihrem Array enthalten ist. Alle Elemente in einem Array sind falsch, wenn es keine wahrheitsgemäßen Elemente enthält. *In der Antwort wurde jedoch behauptet, dass dies
any
teilweise aufgrund von Kurzschlüssen schneller sei als bei anderen Optionen. Ab 2018 Numpy'sall
undany
nicht kurzschließen .Wenn Sie so etwas oft tun, ist es sehr einfach, Ihre eigenen Kurzschlussversionen zu erstellen, indem Sie
numba
:Diese sind in der Regel schneller als die Versionen von Numpy, auch wenn sie nicht kurzgeschlossen werden.
count_nonzero
ist das langsamste.Einige Eingaben zur Überprüfung der Leistung:
Prüfen:
* Hilfreich
all
undany
Äquivalenzen:quelle
Wenn Sie auf alle Nullen testen, um eine Warnung bei einer anderen Numpy-Funktion zu vermeiden, wird die Zeile in einen Versuch eingeschlossen, mit Ausnahme des Blocks, der es erspart, den Test für Nullen vor der Operation durchzuführen, an der Sie interessiert sind, d. H.
quelle