我有两个数组,第一个np.array是源点,第二个np.array是我需要计算的所有距离。
例如:
import numpy as np
from_array = np.array([(0,1), (1,1), ..., (x,y)])
to_array = np.array([(5,1), (3,1), ..., (x,y)])
我需要做的是取from_array
的第一个条目,并计算from_array [0]
到to_array中所有点之间的距离,然后保留最大距离。
所以我可以用暴力方法解决:
def get_distances(from_array, to_array):
results = []
distances = []
for pt in from_array:
for to in to_array:
results.append(calc_dist(pt, to))
distances.append(results)
return distances
但是这种方法很慢,我正在寻找一种优化的计算方式,因为我可能会有成千上万个点需要计算。
最终目标是计算豪斯多夫距离。
fhd = np.mean(np.min(SomeDistanceArray,axis=0))
rhd = np.mean(np.min(SomeDistanceArray,axis=1))
print (max(fhd, rhd))
我希望仅使用numpy完成这个任务。我的距离可以是欧几里得距离或平方欧几里得距离。
因此,我正在寻求一种优化的方法来计算两个np.arrays的欧几里得距离方法。需要注意的是,数组1可能比数组2有更多的行。这意味着2D数组(x,y)的长度可能会将10行与30行进行比较。