2016-12-09 10 views
2

名前と座標を3Dで持つ点のリストを含むリストがあります。リストのはるかに大きい長さを持つこのような何か:Python:距離と一緒にポイントとリターンポイントの間のすべてのペアごとの距離を見つける

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]) 

を返します。各距離の値

私は初心者です、私はたぶん、あなたが右に他のすべての要素との最後の1を除いて、「グループ」内のすべての要素を組み合わせて、forループのネストされた2試みることができるのpython 3.おかげ

答えて

0

を使用しています:

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] 
関連する問題