gpt4 book ai didi

python找到两个numpy数组的交点

转载 作者:行者123 更新时间:2023-11-28 16:26:41 25 4
gpt4 key购买 nike

我有两个描述空间曲线的 numpy 数组,它们在一个点上相交,我想在两个数组中为该交点找到最近的值,我有这段代码可以正常工作,但它会慢很多点数。

from scipy import spatial
def nearest(arr0, arr1):
ptos = []
j = 0
for i in arr0:
distance, index = spatial.KDTree(arr1).query(i)
ptos.append([distance, index, j])
j += 1
ptos.sort()
return (arr1[ptos[0][1]].tolist(), ptos[0][1], ptos[0][2])

结果将是 (<point coordinates>,<position in arr1>,<position in arr0>)

最佳答案

您的代码做了很多您不需要的事情。首先,您要在每个循环中重建 KDtree,这是一种浪费。此外,query 采用点数组,因此无需编写自己的循环。 Ptos 是一种奇怪的数据结构,您不需要它(也不需要对其进行排序)。尝试这样的事情。

from scipy import spatial

def nearest(arr0, arr1):
tree = spatial.KDTree(arr1)
distance, arr1_index = tree.query(arr0)
best_arr0 = distance.argmin()
best_arr1 = arr1_index[best_arr0]
two_closest_points = (arr0[best_arr0], arr1[best_arr1])
return two_closest_points, best_arr1, best_arr0

如果仍然不够快,您需要更详细地描述您的问题,并确定是否有另一种搜索算法更适合您的问题。

关于python找到两个numpy数组的交点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36020959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com