我有包含一系列元組(X,Y),表示關於笛卡爾平面不同點的兩個列表:蟒:在兩個陣列的兩個點之間發現最小距離
a = [(0, 0), (1, 2), (1, 3), (2, 4)]
b = [(3, 4), (4, 1), (5, 3)]
我想在更小的距離,以找到兩個點(每個列表,而不是在同一列表中),在這種具體情況下:
[((2, 4), (3, 4))]
其距離等於1。我用列表理解,如:
[(Pa, Pb) for Pa in a for Pb in b \
if math.sqrt(math.pow(Pa[0]-Pb[0],2) + math.pow(Pa[1]-Pb[1],2)) <= 2.0]
但這使用一個閾值。有沒有辦法在某處添加argmin()
或類似的東西,並只獲得最小距離對[((xa, ya), (xb, yb))]
?謝謝。
你可以創建它們之間的對和距離字典...然後你可以選擇對有最小dist –