使用numpy广播的计算方法距离矩阵

问题描述 投票:0回答:1

我想计算(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)。

您能告诉我是否知道解决方法吗?

python numpy distance
1个回答
0
投票

您是否尝试过研究numpy.linalg.norm

[在following thread中也使用过

© www.soinside.com 2019 - 2024. All rights reserved.