行向量矩阵间的python-numpy-euclide距离计算

2024-10-05 10:55:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的,我想问你如何计算点之间的欧几里德距离存储在矢量。

假设我们有一个numpy.array,每一行是一个向量,一个numpy.array。我想知道是否有可能计算所有点和这个点之间的欧几里德距离,并将它们存储在一个numpy.array中。

下面是一个界面:

points #2d list of row-vectors
singlePoint #one row-vector

listOfDistances= procedure( points,singlePoint)

我们能要这样的吗? 或者有可能有一个命令,把单点作为其他点的列表,最后我们得到一个距离矩阵?

谢谢


Tags: ofnumpy距离界面矢量arrayone向量
3条回答

虽然你可以使用矢量化,@Karl的方法在使用numpy数组时会比较慢。

更简单的方法是只做np.hypot(*(points - single_point).T)。(转置假定点是Nx2数组,而不是2xN。如果是2xN,则不需要.T

不过,这有点不可读,所以您可以像这样更清楚地写出来(使用一些固定的示例数据…):

import numpy as np
single_point = [3, 4]
points = np.arange(20).reshape((10,2))

dist = (points - single_point)**2
dist = np.sum(dist, axis=1)
dist = np.sqrt(dist)
import numpy as np
def distance(v1, v2):
    return np.sqrt(np.sum((v1 - v2) ** 2))    

要获得距离,可以使用numpy中linalg模块的norm方法:

np.linalg.norm(x - y)

相关问题 更多 >

    热门问题