2011-12-04 9 views
-2

私はこのリストから最短のEuclidean distanceというリストを意味するmedianaを取得しようとしています。Python:リストにリスト

2つのベクトルの間の距離を返す関数euclidを作成しましたが、2つのforループに問題があります。

このプログラムは

xs=[[1, 1, 1], [3, 2, 1], [1, 0, 3], [1, 2, 3], [4, 4, 4]] 
naj = 0 
vsota=0 
ys=[] 
for i,j in enumerate(xs): 
    for x,y in enumerate(xs): 
     if j!=y: 
      vsota=euclid(j,y) 

      print(vsota,"   ",j,y) 

を[1,2,3]を返す必要がありますが、それは現在返します

2.23606797749979    [1, 1, 1] [3, 2, 1] 
2.23606797749979    [1, 1, 1] [1, 0, 3] 
2.23606797749979    [1, 1, 1] [1, 2, 3] 
5.196152422706632    [1, 1, 1] [4, 4, 4] 
2.23606797749979    [3, 2, 1] [1, 1, 1] 
3.4641016151377544    [3, 2, 1] [1, 0, 3] 
2.8284271247461903    [3, 2, 1] [1, 2, 3] 
3.7416573867739413    [3, 2, 1] [4, 4, 4] 
2.23606797749979    [1, 0, 3] [1, 1, 1] 
3.4641016151377544    [1, 0, 3] [3, 2, 1] 
2.0        [1, 0, 3] [1, 2, 3] 
5.0990195135927845    [1, 0, 3] [4, 4, 4] 
2.23606797749979    [1, 2, 3] [1, 1, 1] 
2.8284271247461903    [1, 2, 3] [3, 2, 1] 
2.0        [1, 2, 3] [1, 0, 3] 
3.7416573867739413    [1, 2, 3] [4, 4, 4] 
5.196152422706632    [4, 4, 4] [1, 1, 1] 
3.7416573867739413    [4, 4, 4] [3, 2, 1] 
5.0990195135927845    [4, 4, 4] [1, 0, 3] 
3.7416573867739413    [4, 4, 4] [1, 2, 3] 

どのように私は[1,1で始まるすべての数字を合計します、 1]、[3,2,1] ...などを計算し、その距離をそれぞれ比較して、より低い合計でインデックスを返しますか?

+0

あなたはこれを解決しましたか?答えのどれかが役に立ったのですか? – mac

答えて

0

すでにチェックされているthisまたはthisまたはthis? stackoverflowや他のプラットフォームには多くのソリューションがあります。私はあなたがそれらをチェックアウトしたと確信しています。だから彼らに何が間違っている?

+0

lol私はtottaly forogotを検索パラメータとしてユークリッド距離でチェックすることは申し訳ありません。あなたが見ることができるように、私はまだ質問 – buco

+0

でそれを使用しませんでした。私はそれらをチェックして、私が求めているものではありません。私は距離を取得する方法を知っている私の関数ユークラッドそれを行う(tho私はそれのためのコードを公開しませんでした) 問題はどのように私はどのような条件を使用する必要があります最短ユークリッド距離を持つリスト内のリストを取得します。私は各リストのすべての距離をcomperingする必要がありますし、他の人と比較して最短距離をリストウィットを選んだ。また、私はnumpyモジュールを持っていないし、限り、私はそれを必要とすべきではない知っている – buco

0

2つの変数を使用して最低値を記録できますか?

lowest_vsota = 0 
lowest_coord = [] 

は次にもしブロックに...

if vsota < lowest_vsota: 
    lowest_vsota = vsota 
    lowest_coord = j 
関連する問題