坐标快速转距离矩阵

给定若干个点如何转换成距离矩阵,最简单粗暴的方法就是依次计算出各个点彼此间的距离然后填到矩阵中,参考练习题记录:求解距离矩阵,首先生成一百个二维坐标点,计算任意两个坐标点的距离

但是我们可以利用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.        ]]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值