Wie zähle ich die Anzahl der 0
s und 1
s im folgenden Array?
y = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
y.count(0)
gibt:
numpy.ndarray
Objekt hat kein Attributcount
mfloww
Wie zähle ich die Anzahl der 0
s und 1
s im folgenden Array?
y = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
y.count(0)
gibt:
numpy.ndarray
Objekt hat kein Attributcount
Aziz Alto
Was ist mit der Verwendung numpy.count_nonzero
etwas wie
>>> import numpy as np
>>> y = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 0])
>>> np.count_nonzero(y == 1)
1
>>> np.count_nonzero(y == 2)
7
>>> np.count_nonzero(y == 3)
3
Diese Antwort scheint besser zu sein als die mit den meisten Upvotes.
– Alex
31. Dezember 2017 um 17:16 Uhr
Ich glaube nicht, dass das funktionieren würde numpy.ndarray
wie OP ursprünglich gefragt hat.
– LYu
28. Juli 2018 um 20:55 Uhr
@LYu – das y ist in dieser Antwort ein np.ndarray. Außerdem – die meisten, wenn nicht alle np.something-Funktionen funktionieren problemlos auf ndarrays.
– Magnuski
29. Juli 2018 um 19:34 Uhr
Es ist definitiv am einfachsten zu lesen. Die Frage ist, was am schnellsten und am platzsparendsten ist
– Nathan
30. Mai 2018 um 19:02 Uhr
Möglicherweise weniger platzsparend als numpy.count_nonzero(y==0), da es den Vektor auswertet (y==0)
– Sridhar Thiagarajan
27. Oktober 2018 um 22:21 Uhr
Ich mag das, weil es ähnlich wie Matlab/Octave ist sum( vector==value )
– ePi272314
17. August 2019 um 17:01 Uhr
Dies funktioniert auch für andere Werte im Array – nicht nur 0 und 1; es müssen nicht einmal Zahlen sein. (y == "A")
gibt ein Array von zurück bool
Werte. Da boolesche Werte in Python gleich 0 und 1 sind, können sie summiert werden: (y == "A").sum()
wird die Anzahl von zurückgeben A
s im Array y
.
– natka_m
17. Dezember 2020 um 15:00 Uhr
Für Ihren Fall könnten Sie auch nachsehen numpy.bincount
In [56]: a = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
In [57]: np.bincount(a)
Out[57]: array([8, 4]) #count of zeros is at index 0 : 8
#count of ones is at index 1 : 4
Dieser Code ist möglicherweise eine der schnellsten Lösungen für größere Arrays, die ich ausprobiert habe. Das Ergebnis als Liste zu erhalten, ist ebenfalls ein Bonus. Danke!
– Youngsup Kim
24. Oktober 2018 um 22:56 Uhr
Und wenn ‘a’ ein n-dimensionales Array ist, können wir einfach verwenden: np.bincount(np.reshape(a, a.size))
– Ari
15. Januar 2020 um 9:01 Uhr
Beachten Sie: (1) Dies rundet Nicht-Ganzzahlen ab. z.B np.bincount([0, 0.5, 1.1]) == array([2, 1])
(2) Wenn Sie ein Array mit großen Ganzzahlen haben, erhalten Sie eine lange Ausgabe, z len(np.bincount([1000])) == 1001
.
– Eistel
2. Juli 2021 um 9:29 Uhr
Es ist auch hilfreich, wenn wir Null für Werte zwischen den maximalen und den minimalen Werten anzeigen müssen, z. B. wenn a = np.array([0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2])
es wird bekommen [8 0 4]
. So für 1
es legte 0
im Ergebnis.
– Ali_Sch
6. Februar um 2:42
y = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
Wenn du weißt, dass sie gerecht sind 0
und 1
:
np.sum(y)
gibt Ihnen die Anzahl der Einsen. np.sum(1-y)
gibt die Nullen.
Für eine leichte Allgemeingültigkeit, wenn Sie zählen wollen 0
und nicht null (aber möglicherweise 2 oder 3):
np.count_nonzero(y)
gibt die Anzahl der Nichtnull an.
Aber wenn Sie etwas Komplizierteres brauchen, glaube ich nicht, dass numpy ein nettes bieten wird count
Möglichkeit. Gehen Sie in diesem Fall zu Sammlungen:
import collections
collections.Counter(y)
> Counter({0: 8, 1: 4})
Dies verhält sich wie ein Diktat
collections.Counter(y)[0]
> 8
Dieser Code ist möglicherweise eine der schnellsten Lösungen für größere Arrays, die ich ausprobiert habe. Das Ergebnis als Liste zu erhalten, ist ebenfalls ein Bonus. Danke!
– Youngsup Kim
24. Oktober 2018 um 22:56 Uhr
Und wenn ‘a’ ein n-dimensionales Array ist, können wir einfach verwenden: np.bincount(np.reshape(a, a.size))
– Ari
15. Januar 2020 um 9:01 Uhr
Beachten Sie: (1) Dies rundet Nicht-Ganzzahlen ab. z.B np.bincount([0, 0.5, 1.1]) == array([2, 1])
(2) Wenn Sie ein Array mit großen Ganzzahlen haben, erhalten Sie eine lange Ausgabe, z len(np.bincount([1000])) == 1001
.
– Eistel
2. Juli 2021 um 9:29 Uhr
Es ist auch hilfreich, wenn wir Null für Werte zwischen den maximalen und den minimalen Werten anzeigen müssen, z. B. wenn a = np.array([0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2])
es wird bekommen [8 0 4]
. So für 1
es legte 0
im Ergebnis.
– Ali_Sch
6. Februar um 2:42
Konvertieren Sie Ihr Array y
auflisten l
und dann tun l.count(1)
und l.count(0)
>>> y = numpy.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
>>> l = list(y)
>>> l.count(1)
4
>>> l.count(0)
8
In diesem Fall ist es auch möglich, einfach zu verwenden
numpy.count_nonzero
.– Mong H.Ng
31. März 2019 um 17:50 Uhr