Skip to content

NumPy: Zählt die Anzahl der Elemente, die Bedingung erfüllen

Python

Dieser Artikel genau, wie sterben Anzahl der Elemente gezählt WIRD, sterben sterben Bedingungen des NumPy-Arrays ndarray erfüllen.

  • Für den gesamten ndarray
  • Für jede Zeile und Spalte von ndarray
  • Prüfen Sie, ob mindestens ein Element die Bedingung erfüllt:numpy.any()
  • Überprüfen Sie, ob alle Elemente die Bedingungen erfüllen:numpy.all()
  • Mehrere Bedingungen
  • Zähle fehlende Werte NaN und unendlich inf

Wenn SIE Elemente, Zeilen und Spalten extrahieren oder löschen möchten, sterben sterben Bedingungen erfüllen, lesen Sie den following Artikel.

Wenn Sie ein Element ersetzen möchten, das sterben Bedingungen erfüllt, lesen Sie den following Artikel.

Die Gesamtzahl der Elemente finden Sie im following Artikel.

Zählen SIE sterben Anzahl der Elemente, sterben sterben Bedingung für das gesamte ndarray erfüllen

Die Vergleichsoperation von ndarray gibt ndarray mit bool (True,False) zurück.

import numpy as np

a = np.arange(12).reshape((3, 4))
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

print(a < 4)
# [[ True  True  True  True]
#  [False False False False]
#  [False False False False]]

print(a % 2 == 1)
# [[False  True False  True]
#  [False  True False  True]
#  [False  True False  True]]

Die Verwendung von np.count_nonzero() ergibt die Anzahl von True, dh die Anzahl der Elemente, die die Bedingung erfüllen.

print(np.count_nonzero(a < 4))
# 4

print(np.count_nonzero(a % 2 == 1))
# 6

Da True als 1 und False als 0 behandelt WIRD, can SIE np.sum() verwenden. Allerdings ist np.count_nonzero() schneller als np.sum().

print(np.sum(a < 4))
# 4

print(np.sum(a % 2 == 1))
# 6

Zählen Sie die Anzahl der Elemente, sterben die Bedingung für jede Zeile und Spalte von ndarray erfüllen

np.count_nonzero() für mehrdimensionale Array-Zählungen für jede Achse (jede Dimension) durch Angabe des Parameters axis.

Im Fall eines zweidimensionalen Arrays gibt Achse = 0 die Anzahl pro Spalte an, Achse = 1 gibt die Anzahl pro Zeile an.

Auf diese Weise können SIE sterben Anzahl der Elemente umfassen, sterben sterben Bedingungen für jede Zeile und Spalte erfüllen.

print(np.count_nonzero(a < 4, axis=0))
# [1 1 1 1]

print(np.count_nonzero(a < 4, axis=1))
# [4 0 0]

print(np.count_nonzero(a % 2 == 1, axis=0))
# [0 3 0 3]

print(np.count_nonzero(a % 2 == 1, axis=1))
# [2 2 2]

Beachten Sie, dass die Parameterachse von np.count_nonzero() in 1.12.0 neu ist. In älteren Versionen können Sie np.sum() verwenden. In np.sum() können Sie die Achse ab Version 1.7.0 angeben

Prüfen Sie, ob mindestens ein Element die Bedingung erfüllt:numpy.any()

np.any() ist eine Funktion, die True zurückgibt, wenn ndarray, das an den ersten Parameter übergeben wird, mindestens ein True-Element enthält, und andernfalls False zurückgibt.

print(np.any(a < 4))
# True

print(np.any(a > 100))
# False

Wie bei np.count_nonzero() WIRD np.any() für jede Zeile oder Spalte verarbeitet, wenn der Parameter axis angegeben ist.

print(np.any(a < 4, axis=0))
# [ True  True  True  True]

print(np.any(a < 4, axis=1))
# [ True False False]

Überprüfen Sie, ob alle Elemente die Bedingungen erfüllen:numpy.all()

np.all() ist eine Funktion, die True zurückgibt, wenn alle Elemente von ndarray, die an den ersten Parameter übergeben werden, True sind, und andernfalls False zurückgibt.

print(np.all(a < 4))
# False

print(np.all(a < 100))
# True

Wie bei np.count_nonzero() WIRD np.all() für jede Zeile oder Spalte verarbeitet, wenn der Parameter axis angegeben ist.

print(np.all(a < 4, axis=0))
# [False False False False]

print(np.all(a < 4, axis=1))
# [ True False False]

Mehrere Bedingungen

Wenn Sie mehrere Bedingungen kombinieren möchten, schließen Sie jeden Bedingungsausdruck in () ein und verwenden Sie & oder |.

print((a < 4) | (a % 2 == 1))
# [[ True  True  True  True]
#  [False  True False  True]
#  [False  True False  True]]

print(np.count_nonzero((a < 4) | (a % 2 == 1)))
# 8

print(np.count_nonzero((a < 4) | (a % 2 == 1), axis=0))
# [1 3 1 3]

print(np.count_nonzero((a < 4) | (a % 2 == 1), axis=1))
# [4 2 2]

Lesen Sie den following Artikel, warum Sie &, | verwenden müssen anstelle von und, oder und warum Klammern notwendig sind.

Zähle fehlende Werte NaN und unendlich inf

Um die Anzahl der fehlenden Werte NaN zu umfassen, wann immer SIE die spezielle Funktion verwenden.

Verwenden Sie die CSV-Datei mit fehlenden Daten als Beispiel für fehlende Werte NaN.

a_nan = np.genfromtxt('data/src/sample_nan.csv', delimiter=',')
print(a_nan)
# [[11. 12. nan 14.]
#  [21. nan nan 24.]
#  [31. 32. 33. 34.]]

Fehlende Werte NaN können durch np.nan, float(’nan‘) usw. generiert werden. Aber selbst wenn fehlende Werte mit == erfasst werden, wird es zu False. Sie müssen np.isnan() zum Zählen verwenden.

print(np.nan == np.nan)
# False

print(a_nan == np.nan)
# [[False False False False]
#  [False False False False]
#  [False False False False]]

print(np.isnan(a_nan))
# [[False False  True False]
#  [False  True  True False]
#  [False False False False]]

Danach can SIE, genau wie in den vorherigen Beispielen, die Anzahl von True mit np.count_nonzero() oder np.sum() umfassen.

print(np.count_nonzero(np.isnan(a_nan)))
# 3

print(np.count_nonzero(np.isnan(a_nan), axis=0))
# [0 1 2 0]

print(np.count_nonzero(np.isnan(a_nan), axis=1))
# [1 2 0]

Wenn Sie Elemente umfassen möchten, denen keine Werte fehlen, verwenden Sie die Negation ~.

print(~np.isnan(a_nan))
# [[ True  True False  True]
#  [ True False False  True]
#  [ True  True  True  True]]

Sie können auch np.isnan() verwenden, um fehlende Werte zu ersetzen oder zu löschen.

Die Funktion, die bestimmt, ob ein Element unendlich inf ist (z. B. np.inf), ist np.isinf(). Sowohl positive als auch negative Unendlichkeit sind wahr.

a_inf = np.array([-np.inf, 0, np.inf])
print(a_inf)
# [-inf   0.  inf]

print(np.isinf(a_inf))
# [ True False  True]

inf kann mit == erstellt werden. Wenn Sie nur positiv oder negativ urteilen möchten, können Sie == verwenden.

print(a_inf == np.inf)
# [False False  True]

print(a_inf == -np.inf)
# [ True False False]

Danach can SIE, genau wie in den vorherigen Beispielen, die Anzahl von True mit np.count_nonzero() oder np.sum() umfassen.

Weitere Informationen zu unendlich inf FINDEN SIE im following Artikel.