對不起,大代碼轉儲。我的問題是與我的最後一個循環。我試圖建立一個新的字典,「候選人」,它包含一個網站與另一個網站的所有可能的組合,映射到它們之間的距離。例如,假設網站1的ID爲1234,網站2的ID爲1235,網站3的ID爲1236.我最終想要的候選字典是{'1234_1235':distance,'1234_1236':distance},即全部從一個網站到其他網站的可能組合。這些組合已經包含在dictkey中;我只需要重新組織它們。這樣我就可以離開最短距離,最終得到每個站點的「最近鄰居」列表。設置一個新的鍵值字典
for i in np.arange(num_sites):
lat1 = lat[i]
lon1 = lon[i]
site1=site[i]
rat1 = lat1*np.pi/180.0
ron1 = lon1*np.pi/180.0
for j in np.arange(i+1,num_sites):
lat2 = lat[j]
lon2 = lon[j]
site2= site[j]
rat2 = lat2*np.pi/180.0
ron2 = lon2*np.pi/180.0
使用haversine公式
d = 2.0*np.arcsin(np.sqrt((np.sin((rat1-rat2)/2))**2 +
np.cos(rat1)*np.cos(rat2)*(np.sin((ron1-ron2)/2))**2))
# dist_arr[i,j] = 6371.0 * d
dictkey[site1+"_"+site2] = 6371.0*d
temporary = set()
for key in dictkey:
parts = key.split("_")
site_one = parts[0]
site_two = parts[1]
temporary.add(site_one)
for temps in temporary:
candidates = dict()
for key in dictkey:
parts = key.split("_")
site_one = parts[0]
site_two = parts[1]
if site_one == temps:
candidates[site_one] = dictkey[key]
很好,謝謝!有沒有辦法讓nearest_site輸出原始網站,所以我知道哪個網站是家,哪個網站是最近的網站?否則,如果我做類似candidates.get(site1,{})的東西,我會得到所有最近的鄰居ID,但不是原始站點號。非常酷的想法,但字典詞典! – Ravmcgav