备选(python),用于计算两个不同集合中所有点之间的距离



我有两束不同的点:set_1set_2。使用python,我想计算从set_1的点到set_2的点的所有距离。

Poins是1维数组:

point_1=np.array([x1,y1,z1])

点集是二维数组:

set_1=np.array([[x1,y1,z1],[x2,y2,z2], ...[xn,yn,zn]])

使用scipy.spatial中的distance,这是我的方法:

np.array([[distance.euclidean(i,j) for i in set_1] for j in set_2])

我可以以某种方式将distance.euclidean直接应用于set_1set_2吗?

这正是scipy.spatial.distance.cdist的设计初衷。

例如,

In [21]: import numpy as np
In [22]: from scipy.spatial.distance import cdist
In [23]: set_1 = np.array([[0, 0, 0], [1, 1, 2], [1, -1, 3]])
In [24]: set_2 = np.array([[0, 0, 10], [1, 1, 1]])
In [25]: cdist(set_1, set_2)
Out[25]: 
array([[10.        ,  1.73205081],
[ 8.1240384 ,  1.        ],
[ 7.14142843,  2.82842712]])

最新更新