Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Python:查找点和返回点之间的所有成对距离以及距离_List_Python 3.x_Numpy_Scipy - Fatal编程技术网

List Python:查找点和返回点之间的所有成对距离以及距离

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

我有一个列表,其中包含点的列表,点的名称和坐标为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], [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]