2016-01-31 27 views
2

我正在與經典的Dijkstra問題作鬥爭!消除由嵌套for循環處理的數據中的重複值(節點)

我有一套節點/座標。我正在重複它們以查看它們是否在給定的radius之內。

x = np.empty([0, 3], dtype=float) 
for j in range(len(Coord)): 
    for k in range(len(Coord)): 
     a = np.sqrt(((Coord[j][0] - Coord[k][0]) ** 2) + ((Coord[j][1] - Coord[k][1]) ** 2)) 
     if a < radius and a != 0: 
      y = np.array([j, k, a]) 
      x = np.vstack((x, y)) 

其中Coord是座標的array

這給了我正確的值,但作爲0-> 3是相同的3> 0我得到了很多重複的數據。這是問題。數據應該是唯一的。

回答

1

一種可能性是在外環的位置,以開始內部循環:

for j in range(len(Coord)): 
    for k in range(j,len(Coord)): 
     [loop body] 

range函數高開始就可以排除所有成對的數值,其中j大於k時,防止任何重複的,但不排除任何非重複的值。