2017-02-09 4 views
3

ich über einen Python-Code kam, die etwas ähnliches hatte, was folgt:numpy mit Vergleichsoperator in dem Parameter bedeutet

a = np.array([1,2,3,4,5,6,7]) 
a 
array([1, 2, 3, 4, 5, 6, 7]) 
np.mean(a) 
4.0 
np.mean(a <=3) 
0.42857142857142855 
np.mean(a <=4) 
0.5714285714285714 

Ich verstehe nicht, was bedeutet der Vergleichsoperator bedeuten? Alle Zeiger für numpy's mean() -Funktions-Implementierung wären nett.

Vielen Dank.

Antwort

3

Nun, wenn Sie a <= 3 schreiben Sie ein Array mit Werten konstruieren:

array([ True, True, True, False, False, False, False], dtype=bool) 

Da True Wert 1.0 (oder 1) und False hat Wert 0.0 (oder 0) berechnet er die mean über die Liste von Booleans. Mit anderen Worten, es wird hier die Anzahl der Elemente gezählt, für die der Wert die Gesamtanzahl der Elemente enthält.

mean selbst hat keine spezifische Verhalten: Wenn Sie eine Liste von Foo s füttern, wird es einfach Foo1+Foo2+...Foon bewerten und über die Länge der Liste teilen, und:

>>> False+True 
1 
>>> True+True 
2 

Daher ist das Ergebnis von np.mean(a <=3) ist 3/7 (die ersten drei Elemente sind <= 3 über sieben Elemente) und np.mean(a <=4) 4/7 hier.

2

Wahrscheinlich möchten Sie den Mittelwert der kleinen Zahlen berechnen. Hier

ist der Weg:

In [2]: a=arange(8) 

In [3]: b= a<=3 

In [4]: b # condition 
Out[4]: array([ True, True, True, True, False, False, False, False], dtype=bool) 

In [5]: a[b] #selection 
Out[5]: array([0, 1, 2, 3]) 

In [6]: a[b].mean() 
Out[6]: 1.5