快速半正弦近似:Python/Pandas 解決方案
簡介
簡介簡介
<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>
簡介
計算緯度間的距離經度座標是地理空間資料分析的常見任務。然而,對數百萬行使用傳統的半正矢公式可能會導致計算成本高。本文提出了一種使用 NumPy 向量化來縮短執行時間的快速替代方案。<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>
NumPy 向量化方法利用對資料數組進行操作的 NumPy 函數,避免了Python 中循環的速度很慢。以下是半正弦函數的向量化版本:
用法要使用向量化解決方案,輸入緯度和經度值應為 NumPy 陣列。例如,要計算Pandas DataFrame 的距離,您可以提取必要的列並使用hasrsine_np 函數,如下所示:優點NumPy 向量化該優點NumPy 向量化該優點NumPy 向量化該優點NumPy 向量化該優點NumPy 向量化該優點NumPy 向量化該優點NumPy 矢量方法顯著提高了性能,可以立即計算數百萬個距離。這是透過避免循環緩慢並利用 NumPy 的高效數組操作來實現的。以上是如何在Python中快速計算經緯度座標之間的距離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!