在Python中用許多點找到兩個最遠點的點


我需要找到距離彼此最遠的兩個點. 
正如屏幕截圖所示,我有一個包含其他兩個數組的數組.一個用於X,一個用於Y坐標.確定數據中最長線的最佳方法是什么?通過這樣說,我需要選擇情節中最遠的兩個點.希望你們能幫忙.下面是一些幫助解釋問題的截圖.

解決方法

您可以通過觀察相距最遠的兩個點將作為凸包中的頂點出現來避免計算成對距離.然后,您可以計算較少點之間的成對距離.

例如,在單位平方中均勻分布100個點,在我的實例中凸包中只有22個點.

import numpy as np
from scipy import spatial
 
# test points
pts = np.random.rand(100,2)
 
# two points which are fruthest apart will occur as vertices of the convex hull
candidates = pts[spatial.ConvexHull(pts).vertices]
 
# get distances between each pair of candidate points
dist_mat = spatial.distance_matrix(candidates,candidates)
 
# get indices of candidates that are furthest apart
i,j = np.unravel_index(dist_mat.argmax(),dist_mat.shape)
 
print(candidates[i],candidates[j])
# e.g. [  1.11251218e-03   5.49583204e-05] [ 0.99989971  0.99924638]

如果數據是二維的,你可以在O(n * log(n))時間compute凸包,其中n是點數.不幸的是,隨着維度數量的增加,性能提升消失了.

總結

以上是腳本之家為你收集整理的在Python中用許多點找到兩個最遠點的點全部內容,希望文章能夠幫你解決在Python中用許多點找到兩個最遠點的點所遇到的程序開發問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM