3
我有2D的兩個陣列的座標點(X,Y)在numpy的,找到每一對之間的歐幾里德距離的兩個陣列
a = [ (x1,y1), (x2,y2), ... (xN,yN) ]
b = [ (X1,Y1), (X2,Y2), ... (XN,YN) ]
如何找到在1xN
每個比對(xi,yi) to (Xi,Yi)
之間的歐幾里德距離陣列?
的scipy.spatial.cdist
功能讓我在NxN
陣列中的所有對之間的距離。
如果我只是用norm
功能通過一個計算距離一個似乎是緩慢的。
有沒有內置函數來做到這一點?
它相當於是相同的,但它是更快地做平方,並用'np.dot'補充說:'增量= A-B; dist = np.dot(delta,delta); dist = np.sqrt(dist)' – Jaime
我不認爲'dot'就像那樣;它計算用於2-d輸入的矩陣產品。你可能可以用'einsum'做一些事情,但我不知道愛因斯坦求和慣例,所以我很難用它來給出答案。 – user2357112
哎呀!你是絕對正確的,它是'inner1d':'import numpy.core.umath_tests as ut; delta = a-b; dist = np.sqrt(dnp.inner1d(delta,delta))'。或者'dist = np.sqrt(np.einsum('ij,ij-> i',delta,delta))'。 – Jaime