我有一个有600多个地理坐标点的数据框熊猫。他的摘录如下:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from math import sin, cos, sqrt, atan2, radians
lat_long = pd.DataFrame({'LATITUDE':[-22.98, -22.97, -22.92, -22.87, -22.89], 'LONGITUDE': [-43.19, -43.39, -43.24, -43.28, -43.67]})
lat_long
要手动计算两点之间的距离,我使用以下代码:
lat1 = radians(lat_long['LATITUDE'][0])
lon1 = radians(lat_long['LONGITUDE'][0])
lat2 = radians(lat_long['LATITUDE'][1])
lon2 = radians(lat_long['LONGITUDE'][1])
R = 6373.0
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2
c = 2 * atan2(sqrt(a), sqrt(1 - a))
distance = R * c
print("Result:", round(distance,4))
我需要做的是创建一个函数,使用上面的公式来计算从所有点到所有点的距离,就像在一个数组中一样。但是我很难思考要做什么函数,以及存储点之间的距离。欢迎任何帮助。输出示例(仅用于说明目的,如果我不清楚的话):
| |point 0 | point1 | point2 |
|point0 | 0 | 2 | 3 |
|point1 | 2 | 0 | 4 |
|point2 | 3 | 4 | 0 |
|distance|distance|distance|
另一个可能的解决办法是
输出
距离矩阵的下三角是空的,因为矩阵是对称的(
dist[i1,i2]==dist[i2,i1]
)您可以使用pdist来计算成对距离:
输出
注意
squareform
将稀疏矩阵转换为密集矩阵,因此结果存储在numpy数组中相关问题 更多 >
编程相关推荐