一个点与阵列中其余点之间的距离

时间:2018-02-04 15:33:57

标签: python arrays numpy

我正在编写一些代码来计算一个点与同一个数组中其余点之间的实际距离。该阵列保持3D空间中粒子的位置。存在N粒子,因此阵列的形状为(N,3)。我选择一个粒子并计算这个粒子与其余粒子之间的距离,所有粒子都在一个阵列中。

这里的任何人都知道如何做到这一点吗?

到目前为止我所拥有的:

xbox = 10
ybox = 10
zbox = 10
nparticles =15
positions = np.empty([nparticles, 3])
for i in range(nparticles):
     xrandomalocation = random.uniform(0, xbox)
     yrandomalocation = random.uniform(0, ybox)
     zrandomalocation = random.uniform(0, zbox)
     positions[i, 0] = xrandomalocation
     positions[i, 1] = yrandomalocation
     positions[i, 2] = zrandomalocation

这就是我现在所拥有的一切。我正在考虑使用np.linalg.norm但是我根本不确定如何将它实现到我的代码中(或者可能在循环中使用它)?

1 个答案:

答案 0 :(得分:3)

听起来您可以使用scipy.distance.cdistscipy.distance.pdist。例如,要获取从X点到coords中的点的距离:

>>> from scipy.spatial import distance
>>> X = [(35.0456, -85.2672)]
>>> coords = [(35.1174, -89.9711),
...           (35.9728, -83.9422),
...           (36.1667, -86.7833)]
>>> distance.cdist(X, coords, 'euclidean')
array([[ 4.70444794,  1.6171966 ,  1.88558331]])

pdist类似,但只接受一个数组,并获得所有对之间的距离。