Heim  >  Artikel  >  Backend-Entwicklung  >  Wie bestimme ich den genauen Y-Achsen-Schnittpunkt von Datenpunkten in Python?

Wie bestimme ich den genauen Y-Achsen-Schnittpunkt von Datenpunkten in Python?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-21 07:15:02905Durchsuche

How to Determine the Exact y-Axis Intersection of Data Points in Python?

Den genauen Schnittpunkt von Datenpunkten mit der y-Achse finden

Beim Zeichnen von Daten in Python kann es nützlich sein, den genauen Wert zu erhalten, an dem eine Kurve die schneidet y-Achse. Dieser Wert kann mit numerischen Methoden ermittelt werden, insbesondere durch lineare Interpolation.

Lösung mit linearer Interpolation

Der folgende Code zeigt, wie man die Nulldurchgänge eines Datenarrays mithilfe linearer Interpolation findet:

<code class="python">import numpy as np

# Generate sample data
N = 750
x = .4 + np.sort(np.random.rand(N)) * 3.5
y = (x - 4) * np.cos(x * 9.) * np.cos(x * 6 + 0.05) + 0.1

# Define function to find roots (zero crossings)
def find_roots(x, y):
    s = np.abs(np.diff(np.sign(y))).astype(bool)
    return x[:-1][s] + np.diff(x)[s]/(np.abs(y[1:][s]/y[:-1][s])+1)

# Find zero crossings
z = find_roots(x, y)

# Plot data and zero crossings
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4)
plt.show()</code>

Umkehrdiagramm für Schnittpunkte bei y-Werten ungleich Null

Die obige Methode kann geändert werden, um Schnittpunkte bei y-Werten ungleich Null (y0) zu finden, indem die Nullstellen von y ermittelt werden - y0:

<code class="python">y0 = 1.4
z = find_roots(x, y - y0)
plt.plot(z, np.zeros(len(z)) + y0)</code>

Schnittpunkte zwischen zwei Kurven

Ähnlich wie bei der ersten Methode umfasst das Ermitteln des Schnittpunkts zwischen zwei Kurven das Ermitteln der Nullstellen der Differenz zwischen den beiden Datenfeldern:

<code class="python"># Generate sample data
x = .4 + np.sort(np.random.rand(N)) * 3.5
y1 = (x - 4) * np.cos(x * 9.) * np.cos(x * 6 + 0.05) + 0.1
y2 = (x - 2) * np.cos(x * 8.) * np.cos(x * 5 + 0.03) + 0.3

# Find intersection points
z = find_roots(x, y2 - y1)

# Plot data and intersection points
plt.plot(x, y1)
plt.plot(x, y2, color="C2")
plt.plot(z, np.interp(z, x, y1), marker="o", ls="", ms=4, color="C1")</code>

Das obige ist der detaillierte Inhalt vonWie bestimme ich den genauen Y-Achsen-Schnittpunkt von Datenpunkten in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn