
Penghampiran Fast Haversine: Penyelesaian Python/Panda
Pengenalan
Mengira jarak antara latitud dan koordinat longitud adalah tugas biasa dalam analisis data geospatial. Walau bagaimanapun, menggunakan formula Haversine tradisional untuk berjuta-juta baris boleh menjadi mahal dari segi pengiraan. Artikel ini membentangkan alternatif pantas menggunakan vektorisasi NumPy untuk masa pelaksanaan yang lebih pantas.
Penyelesaian NumPy Vektor
Pendekatan vektorisasi NumPy menggunakan fungsi NumPy yang beroperasi pada tatasusunan data, mengelakkan kelambatan gelung dalam Python. Di bawah ialah versi vektor fungsi Haversine:
<code class="python">import numpy as np
def haversine_np(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
All args must be of equal length.
"""
lon1, lat1, lon2, lat2 = map(np.radians, [lon1, lat1, lon2, lat2])
dlon = lon2 - lon1
dlat = lat2 - lat1
a = np.sin(dlat/2.0)**2 + np.cos(lat1) * np.cos(lat2) * np.sin(dlon/2.0)**2
c = 2 * np.arcsin(np.sqrt(a))
km = 6378.137 * c
return km</code>Penggunaan
Untuk menggunakan penyelesaian vektor, nilai latitud dan longitud input hendaklah tatasusunan NumPy. Contohnya, untuk mengira jarak bagi Pandas DataFrame, anda boleh mengekstrak lajur yang diperlukan dan menggunakan fungsi haversine_np seperti berikut:
<code class="python">df = pd.DataFrame(...your_dataframe...) lon1, lat1, lon2, lat2 = df['lon1'], df['lat1'], df['lon2'], df['lat2'] df['distance'] = haversine_np(lon1, lat1, lon2, lat2)</code>
Faedah
The NumPy vectorization pendekatan meningkatkan prestasi dengan ketara, membolehkan pengiraan berjuta-juta jarak serta-merta. Ini dicapai dengan mengelakkan kelambatan gelung dan menggunakan operasi tatasusunan NumPy yang cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Jarak Antara Koordinat Latitud dan Longitud dengan Cepat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Bagaimana untuk menetapkan ketelusan warna fon html
Apakah sistem pengendalian awan?
Bagaimana untuk membaca fail teks dalam html
Bagaimana untuk menggunakan perpustakaan python
Pemasang tidak boleh mencipta penyelesaian partition sistem baharu
Apakah yang perlu saya lakukan jika pemacu C saya bertukar merah?
Apakah sebab mengapa rangkaian tidak dapat disambungkan?
pycharm membuka kaedah fail baharu