Schnelle Haversine-Approximation: Nutzung von Numpy für verbesserte Leistung bei Pandas-Berechnungen
Berechnung von Abständen zwischen Koordinatenpaaren in einem Pandas-DataFrame mithilfe der Haversine-Formel kann bei großen Datensätzen rechenintensiv sein. Wenn die Punkte jedoch relativ nahe beieinander liegen und die Genauigkeitsanforderungen gelockert werden, ist eine schnellere Annäherung möglich.
Beachten Sie den folgenden Codeausschnitt:
<code class="python">def haversine(lon1, lat1, lon2, lat2): ... # (haversine calculation) for index, row in df.iterrows(): df.loc[index, 'distance'] = haversine(row['a_longitude'], row['a_latitude'], row['b_longitude'], row['b_latitude'])</code>
Um die Leistung dieses Codes zu optimieren, haben wir kann die leistungsstarken Array-Operationen und Vektorisierungsfunktionen von Numpy nutzen. Dieser Ansatz macht Schleifen überflüssig und ermöglicht die effiziente Verarbeitung ganzer Arrays gleichzeitig.
Hier ist eine vektorisierte Implementierung mit Numpy:
<code class="python">import numpy as np def haversine_np(lon1, lat1, lon2, lat2): ... # (haversine calculation) inputs = map(np.radians, [lon1, lat1, lon2, lat2]) distance = haversine_np(*inputs)</code>
Um dies in einen Pandas DataFrame zu integrieren, können wir einfach verwenden Folgendes:
<code class="python">df['distance'] = haversine_np(df['lon1'], df['lat1'], df['lon2'], df['lat2'])</code>
Dieser vektorisierte Ansatz nutzt die optimierten Operationen von Numpy und eliminiert den zeitaufwändigen Schleifenprozess. Dadurch ist die Berechnung insbesondere bei großen Datensätzen deutlich schneller. Durch die Nutzung der Leistungsfähigkeit von Numpy können wir in Pandas schnellere und effizientere Haversinus-Approximationen erzielen.
Das obige ist der detaillierte Inhalt vonWie kann Numpy die Haversine-Approximationsleistung in Pandas-Berechnungen verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!