首页 > 解决方案 > 如何仅使用numpy获取具有给定坐标的ndarray的成对距离矩阵

问题描述

我有point_coordsndarray:

point_coord_x = np.array([np.random.randint(low=-100, high=100) for i in range(40)])
point_coord_y = np.array([np.random.randint(low=-100, high=100) for i in range(40)])
point_coords = np.array([point_coord_x, point_coord_y]).transpose()

看起来像:

point_coords
array([[  62,  -31],
       [  49,   33],
       [  -2,  -86],
       [ -29,   49],
        ...

我想得到一个点之间距离的方阵。我该怎么做?

标签: pythonpython-3.xnumpy

解决方案


您可以仅使用Numpy来做到这一点:

通过每个坐标(方阵)计算增量:

dx = point_coord_x[:, np.newaxis] - point_coord_x[np.newaxis, :]
dy = point_coord_y[:, np.newaxis] - point_coord_y[np.newaxis, :]

然后从这些增量计算距离数组:

result = np.sqrt(dx ** 2 + dy ** 2)

推荐阅读