替代 (python) 计算两个不同集合中所有点之间的距离
Alternative (python) to calculate distance between all points at two different sets
我有两个不同的点:set_1
和 set_2
。
使用 python,我想计算从 set_1
点到 set_2
点的所有距离。
点是一维数组:
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_1
和 set_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]])
我有两个不同的点:set_1
和 set_2
。
使用 python,我想计算从 set_1
点到 set_2
点的所有距离。
点是一维数组:
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_1
和 set_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]])