给定若干个点如何转换成距离矩阵,最简单粗暴的方法就是依次计算出各个点彼此间的距离然后填到矩阵中,参考练习题记录:求解距离矩阵,首先生成一百个二维坐标点,计算任意两个坐标点的距离。
但是我们可以利用python中的scipy
模块快速转换,如下:
from scipy.spatial.distance import cdist
coords = [(35.0456, -85.2672),
(35.1174, -89.9711),
(35.9728, -83.9422),
(36.1667, -86.7833)] # 四个点的坐标
''' 也可以是以下形式
coords = [[35.0456, -85.2672],
[35.1174, -89.9711],
[35.9728, -83.9422],
[36.1667, -86.7833]] # 四个点的坐标
'''
distance_matrix = cdist(coords, coords, 'euclidean') # euclidean表示欧式距离
print(distance_matrix)
注意程序中的'euclidean'
表示欧式距离,也可以是其他的,比如 ‘braycurtis’, ‘canberra’等,细节参考scipy api
输入如下:
[[0. 4.70444794 1.6171966 1.88558331]
[4.70444794 0. 6.0892811 3.35605413]
[1.6171966 6.0892811 0. 2.84770898]
[1.88558331 3.35605413 2.84770898 0. ]]