빠른 하버사인 근사: Python/Pandas 솔루션
소개
위도 간 거리 계산 경도 좌표는 지리공간 데이터 분석의 일반적인 작업입니다. 그러나 수백만 개의 행에 대해 기존 Haversine 공식을 사용하면 계산 비용이 많이 들 수 있습니다. 이 기사에서는 더 빠른 실행 시간을 위해 NumPy 벡터화를 사용하는 빠른 대안을 제시합니다.
벡터화된 NumPy 솔루션
NumPy 벡터화 접근 방식은 데이터 배열에서 작동하는 NumPy 함수를 활용합니다. Python의 반복 속도가 느립니다. 다음은 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>
사용
벡터화된 솔루션을 사용하려면 입력 위도 및 경도 값이 NumPy 배열이어야 합니다. 예를 들어 Pandas DataFrame의 거리를 계산하려면 필요한 열을 추출하고 다음과 같이 haversine_np 함수를 사용할 수 있습니다.
<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에서 위도와 경도 좌표 사이의 거리를 어떻게 빠르게 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!