我有一长串已知坐标的H-points
。我还有一个TP-points
的列表。我想知道H-points
是否属于任何(!)TP-point
具有一定半径(例如r=5
)
dfPoints = pd.DataFrame({'H-points' : ['a','b','c','d','e'],
'Xh' :[10, 35, 52, 78, 9],
'Yh' : [15,5,11,20,10]})
dfTrafaPostaje = pd.DataFrame({'TP-points' : ['a','b','c','d','e'],
'Xt' :[15,25,35],
'Yt' : [15,25,35],
'M' : [5,2,3]})
def inside_circle(x, y, a, b, r):
return (x - a)*(x - a) + (y - b)*(y - b) < r*r
我已经开始了,但是。。如果只检查一个TP点,就容易多了。但如果我有1500个和30000个H点,那么我需要更一般的解决方案。 有人能帮忙吗
另一种选择是使用
distance_matrix
fromscipy.spatial
:对
1500 dfPoints
和30000 dfTrafaPostje
需要2秒更新:获取得分最高的参考点的索引:
对于包含的样本数据:
您可以使用scipy中的cdist来计算成对距离,然后在距离小于半径的地方创建一个带True的掩码,最后过滤:
输出
相关问题 更多 >
编程相关推荐