HOWTO · Python
Steilheit in Python berechnen
In diesem Tutorial wird erläutert, wie die Steigung einer Linie in Python berechnet wird.
Auf dieser Seite
Die Steigung beschreibt, um wie viel sich die y-Koordinate einer Linie pro Einheit Änderung der x-Koordinate verändert. Für zwei Punkte berechnet sie sich mit m = (y2 - y1) / (x2 - x1). In Python eignet sich eine kleine Funktion für die direkte Berechnung zwischen zwei Punkten. Wenn Sie eine Linie an gepaarte Daten anpassen möchten, können Sie SciPy oder NumPy verwenden. Die Anpassungsfunktionen funktionieren auch mit zwei Punkten, ihr Hauptvorteil liegt jedoch in der Verarbeitung von Datensätzen mit mehr Beobachtungen.
Das Python Tutorial von DelftStack bündelt dieses und viele weitere Mathematik- und Alltagsthemen in über 1.400 Anleitungen mit klarer Lernreihenfolge.
Steigung zwischen zwei Punkten mit einer Python-Funktion berechnen
Bei den Punkten (x1, y1) und (x2, y2) steht der Zähler für die vertikale Änderung und der Nenner für die horizontale Änderung. Achten Sie beim Übergeben der Werte an die Funktion darauf, jede x-Koordinate mit der zugehörigen y-Koordinate zu paaren.
Führen Sie dieses Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
def slope(x1, y1, x2, y2):
return (y2 - y1) / (x2 - x1)
print(slope(4, 5, 8, 10))
1.25
Die Funktion gibt den Quotienten aus der Änderung von y und der Änderung von x zurück. Bei diesen Koordinaten beträgt die vertikale Änderung 5 und die horizontale Änderung 4; die Steigung ist daher 5/4. Ein positives Ergebnis bedeutet, dass y steigt, wenn x steigt. Bei einem negativen Ergebnis sinkt y, wenn x steigt.
Eine Regressionssteigung mit SciPy berechnen
scipy.stats.linregress passt eine Gerade an gepaarte x- und y-Werte an und gibt Regressionsstatistiken zurück. slope ist die Steigung der angepassten Geraden. Zu den weiteren Rückgabewerten gehören der Achsenabschnitt, der Korrelationskoeffizient, der p-Wert und der Standardfehler. Bei zwei Punkten verläuft die angepasste Gerade durch beide Punkte. Bei mehr Punkten liefert die Funktion eine lineare Anpassung an den Datensatz, statt für jedes Punktepaar eine eigene Steigung zu berechnen.
Dieses Beispiel verwendet dieselben zwei Punkte wie die direkte Funktion. Für einen Datensatz ersetzen Sie die Listen durch gleich lange Folgen von Beobachtungswerten.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
from scipy.stats import linregress
x = [4, 8]
y = [5, 10]
result = linregress(x, y)
print(result.slope)
1.25
Importiert wird genau die Funktion linregress; sie ist keine Methode der gesamten Bibliothek SciPy. Installieren Sie SciPy in Ihrer Python-Umgebung, bevor Sie die Funktion ausführen.
Mit NumPy eine Gerade anpassen
np.polyfit ermittelt Polynomkoeffizienten, die zu den übergebenen Daten passen. Setzen Sie den Grad auf 1, um eine Gerade anzupassen. Die Koeffizienten werden vom höchsten Exponenten bis zum konstanten Term zurückgegeben. Der erste Wert ist daher die Steigung, der zweite der Achsenabschnitt.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import numpy as np
x = [4, 8]
y = [5, 10]
slope, intercept = np.polyfit(x, y, 1)
print(slope)
1.2499999999999991
Wie bei der Regression wird bei mehr als zwei Beobachtungen eine Gerade an den gesamten Datensatz angepasst. Aufgrund der Gleitkommaarithmetik kann der berechnete Koeffizient als Wert angezeigt werden, der der mathematischen Steigung sehr nahekommt, statt als exakte Dezimalzahl. Installieren Sie NumPy in Ihrer Python-Umgebung, bevor Sie die Funktion ausführen.
Vertikale Linien berücksichtigen und die passende Methode wählen
Die direkte Formel dividiert durch x2 - x1. Haben beide Punkte dieselbe x-Koordinate, ist diese Differenz null. Eine vertikale Linie hat deshalb keine endliche Steigung, und die Funktion kann mit gewöhnlicher Division keinen entsprechenden Wert zurückgeben. Behandeln Sie diesen Fall passend zu Ihrer Anwendung: Melden Sie beispielsweise, dass die Steigung nicht definiert ist, oder stellen Sie die Linie separat dar, statt sie als numerische Steigung zu behandeln.
Verwenden Sie die direkte Funktion, wenn Sie genau zwei Punkte haben und deren Steigung berechnen möchten. Wählen Sie linregress, wenn Sie für gepaarte Beobachtungen eine Regressionssteigung und zugehörige Statistiken benötigen. Verwenden Sie np.polyfit(x, y, 1), wenn Sie die Koeffizienten einer Polynom-Anpassung ersten Grades brauchen. Beide Bibliotheksansätze beschreiben bei einem größeren Datensatz eine Ausgleichsgerade. Sie heben die Einschränkung nicht auf, dass sich eine vertikale Linie nicht durch eine endliche Steigung darstellen lässt.