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

Patricia Arquette
Freigeben: 2024-10-21 07:15:02
Original
969 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage