= np.array([1, 2, 3, 4, 5])
a
= np.array([9, 8, 7, 6, 5]) b
4 Rechnen mit Arrays
4.1 Arithmetische Funktionen
Ein großer Vorteil an NumPy ist das Rechnen mit Arrays. Ohne NumPy müsste man entweder eine Schleife
oder aber List comprehension
benutzen, um mit sämtlichen Werten in der Liste zu rechnen. In NumPy fällt diese Unannehmlichkeit weg.
Normale mathematische Operationen, wie die Addition, lassen sich auf zwei Arten ausdrücken. Entweder über die np.add()
Funktion oder aber simpel über das +
Zeichen.
np.add(a,b)
array([10, 10, 10, 10, 10])
+ b a
array([10, 10, 10, 10, 10])
Ohne NumPy würde die Operation folgendermaßen aussehen:
= np.ones(5)
ergebnis for i in range(len(a)):
= a[i] + b[i]
ergebnis[i]
print(ergebnis)
[10. 10. 10. 10. 10.]
Für die anderen Rechenarten existieren auch Funktionen: np.subtract()
, np.multiply()
und np.divide()
.
Auch für die anderen höheren Rechenoperationen gibt es ebenfalls Funktionen:
np.exp(a)
np.sqrt(a)
np.power(a, 3)
np.sin(a)
np.cos(a)
np.tan(a)
np.log(a)
a.dot(b)
Wie auch am Taschenrechner birgt das Arbeiten mit den Winkelfunktionen (sin, cos, …) die Fehlerquelle, dass man nicht mit Radian-Werten, sondern mit Grad-Werten arbeitet. Die Winkelfunktionen in numpy erwarten jedoch Radian-Werte.
Für eine einfache Umrechnung bietet NumPy die Funktionen np.grad2rad()
und np.rad2grad()
.
4.2 Vergleiche
NumPy-Arrays lassen sich auch miteinander vergleichen. Betrachten wir die folgenden zwei Arrays:
= np.array([1, 2, 3, 4, 5])
a
= np.array([9, 2, 7, 4, 5]) b
Möchten wir feststellen, ob diese zwei Arrays identisch sind, können wir den ==
-Komparator benutzen. Dieser vergleicht die Arrays elementweise.
== b a
array([False, True, False, True, True])
Es ist außerdem möglich Arrays mit den >
- und <
-Operatoren zu vergleichen:
< b a
array([ True, False, True, False, False])
Möchte man Arrays mit Gleitkommazahlen vergleichen, ist es oftmals nötig, eine gewisse Toleranz zu benutzen, da bei Rechenoperationen minimale Rundungsfehler entstehen können.
= np.array(0.1 + 0.2)
a = np.array(0.3)
b == b a
np.False_
Für diesen Fall gibt es eine Vergleichsfunktion np.isclose(a,b,atol)
, wobei atol
für die absolute Toleranz steht. Im folgenden Beispiel wird eine absolute Toleranz von 0,001 verwendet.
= np.array(0.1 + 0.2)
a = np.array(0.3)
b print(np.isclose(a, b, atol=0.001))
True
Zahlen werden intern als Binärzahlen dargestellt. So wie 1/3 nicht mit einer endlichen Anzahl an Ziffern korrekt dargestellt werden kann müssen Zahlen ggf. gerundet werden, um im Binärsystem dargestellt zu werden.
= 0.1
a = 0.2
b print(a + b)
0.30000000000000004
4.3 Aggregatfunktionen
Für verschiedene Auswertungen benötigen wir Funktionen, wie etwa die Summen oder die Mittelwert-Funktion. Starten wir mit einem Beispiel Array a:
= np.array([1, 2, 3, 4, 8]) a
Die Summer wird über die Funktion np.sum()
berechnet.
sum(a) np.
np.int64(18)
Natürlich lassen sich auch der Minimalwert und der Maximalwert eines Arrays ermitteln. Die beiden Funktionen lauten np.min()
und np.max()
.
min(a) np.
np.int64(1)
Möchte man nicht das Maximum selbst, sondern die Position des Maximums bestimmen, wird statt np.max
die Funktion np.argmax
verwendet.
Für statistische Auswertungen werden häufig die Funktion für den Mittelwert np.mean()
, die Funktion für den Median np.median()
und die Funktion für die Standardabweichung np.std()
verwendet.
np.mean(a)
np.float64(3.6)
np.median(a)
np.float64(3.0)
np.std(a)
np.float64(2.4166091947189146)
Gegeben sind zwei eindimensionale Arrays a und b:
a = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100]) und b = np.array([5, 15, 25, 35, 45, 55, 65, 75, 85, 95])
- Erstellen Sie ein neues Array, das die Sinuswerte der addierten Arrays a und b enthält.
- Berechnen Sie die Summe, den Mittelwert und die Standardabweichung der Elemente in a.
- Finden Sie den größten und den kleinsten Wert in a und b.