我正在编写一些代码来计算一个点与同一个数组中其余点之间的实际距离。该阵列保持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
但是我根本不确定如何将它实现到我的代码中(或者可能在循环中使用它)?
答案 0 :(得分:3)
听起来您可以使用scipy.distance.cdist
或scipy.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
类似,但只接受一个数组,并获得所有对之间的距离。