List Python:查找点和返回点之间的所有成对距离以及距离
我有一个列表,其中包含点的列表,点的名称和坐标为3D。类似这样的内容,列表长度要大得多:List Python:查找点和返回点之间的所有成对距离以及距离,list,python-3.x,numpy,scipy,List,Python 3.x,Numpy,Scipy,我有一个列表,其中包含点的列表,点的名称和坐标为3D。类似这样的内容,列表长度要大得多: group=[[gr1, 5, 8, 9], [gr2, 7, 4, 5], [gr3, 3, 8, 1], [gr4, 3, 4, 8]] 我想计算坐标中所有可能的成对距离,并返回距离和相应的点。如下: distances=[[gr1, gr2, 6.],[gr1, gr3, 8.24621125], [gr1, gr4, 4.58257569], [gr2, gr3, 6.92820323], [gr
group=[[gr1, 5, 8, 9], [gr2, 7, 4, 5], [gr3, 3, 8, 1], [gr4, 3, 4, 8]]
我想计算坐标中所有可能的成对距离,并返回距离和相应的点。如下:
distances=[[gr1, gr2, 6.],[gr1, gr3, 8.24621125], [gr1, gr4, 4.58257569], [gr2, gr3, 6.92820323], [gr2, gr4, 5.], [gr3, gr4, 8.06225775]]
我尝试使用scipy.spatial.distance.pdist,但这只会返回以下结果
array([ 6. , 8.24621125, 4.58257569, 6.92820323, 5. ,
8.06225775])
如何提取信息以及每个距离值考虑的组
我是一名初学者,正在使用python 3。谢谢也许您可以尝试使用两个嵌套for循环来组合“组”中的每个元素,但最后一个元素与右侧的每个其他元素除外:
group=[["gr1", 5, 8, 9], ["gr2", 7, 4, 5], ["gr3", 3, 8, 1], ["gr4", 3, 4, 8]]
distances=[]
for i,g in enumerate(group[:-1]):
for h in group[i+1:]:
d = ((g[1]-h[1])**2+(g[2]-h[2])**2+(g[3]-h[3])**2)**0.5
distances.append([g[0],h[0],d])
print(*distances,sep="\n")
结果:
['gr1', 'gr2', 6.0]
['gr1', 'gr3', 8.246211251235321]
['gr1', 'gr4', 4.58257569495584]
['gr2', 'gr3', 6.928203230275509]
['gr2', 'gr4', 5.0]
['gr3', 'gr4', 8.06225774829855]