我会给一个纯python的方法。
导入从数学模块sqrt函数:
from math import sqrt
我们假设你以下面的方式有你的坐标线表:
cords['Boston'] = (5, 2)
定义一个函数来计算两个给定2d点的欧几里德距离:
def dist(a, b):
d = [a[0] - b[0], a[1] - b[1]]
return sqrt(d[0] * d[0] + d[1] * d[1])
初始化所得矩阵作为字典:
D = {}
for city1, cords1 in cords.items():
D[city1] = {}
for city2, cords2 in cords.items():
D[city1][city2] = dist(cords1, cords2)
d是你的结果矩阵
完整的源是下面具有印刷结果一起:
from math import sqrt
cords = {}
cords['Boston'] = (5, 2)
cords['Phoenix'] = (7, 3)
cords['New York'] = (8, 1)
def dist(a, b):
d = [a[0] - b[0], a[1] - b[1]]
return sqrt(d[0] * d[0] + d[1] * d[1])
D = {}
for city1, cords1 in cords.items():
D[city1] = {}
for city2, cords2 in cords.items():
D[city1][city2] = dist(cords1, cords2)
for city1, v in D.items():
for city2, d in v.items():
print city1, city2, d
结果:
Boston Boston 0.0
Boston New York 3.16227766017
Boston Phoenix 2.2360679775
New York Boston 3.16227766017
New York New York 0.0
New York Phoenix 2.2360679775
Phoenix Boston 2.2360679775
Phoenix New York 2.2360679775
Phoenix Phoenix 0.0
你有任何代码了吗?请至少提供一段代码,让您将这些距离读入内存以获得类似于线缆的内容[boston] =(5,2) – pkacprzak
现在即时阅读CSV文件,如下所示:Data = pd.read_csv('C:\ Users \杰里\桌面\ cities.csv') – Jeremy