[英]calculation method distance matrix using numpy broadcasting
我想計算(x,y,z)坐標的歐幾里得距離矩陣。 我找到了計算(x,y)坐標的歐幾里得距離矩陣的方法。
def euclidian_dist(x,y):
diff = np.expand_dims(x, axis=1) - np.expand_dims(y, axis=0)
distance_matrix = np.sqrt(np.sum(diff ** 2, axis=-1))
return distance_matrix
if __name__=="__main__":
#[[x1,y1],[x2,y2],...,[xn,yn]]
p = np.array([[0.0, 0.0],[1., 0],[1, 1],[0, 1]])
q = np.array([[0., 0],[1., 0],[0.3, 0.4],[0.7, 0.6]])
euclidian_dist(p,q)
ans: array([[0. , 1. , 0.5 , 0.92195445],
[1. , 0. , 0.80622577, 0.67082039],
[1.41421356, 1. , 0.92195445, 0.5 ],
[1. , 1.41421356, 0.67082039, 0.80622577]])
在下一步中,我想使用 x,y,z 坐標([[x1,y1,z1],[x2,y2,z2],...,[xn,yn,zn]])
並想得到歐幾里得距離矩陣(形狀:n✕n)。
如果您知道解決方案,能否告訴我?
對 3D 點使用相同的代碼。 它工作正常:
def euclidian_dist(x,y):
diff = np.expand_dims(x, axis=1) - np.expand_dims(y, axis=0)
distance_matrix = np.sqrt(np.sum(diff ** 2, axis=-1))
return distance_matrix
if __name__=="__main__":
#[[x1,y1],[x2,y2],...,[xn,yn]]
p = np.array([[0.0, 0.0, 0.0],[1.,1., 0],[1, 1, 1],[0, 0, 1]])
q = np.array([[0., 0, 0],[1.,1., 0],[0.3,0.3, 0.4],[0.7, 0.6, 0.6]])
print(euclidian_dist(p,q))
output:
[[0. 1.41421356 0.58309519 1.1 ]
[1.41421356 0. 1.06770783 0.78102497]
[1.73205081 1. 1.15758369 0.64031242]
[1. 1.73205081 0.73484692 1.00498756]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.