首页 > 解决方案 > 计算数组之间的距离

问题描述

我正在以向量化的方式计算我的 X 个数据点和我存储它们的索引的质心向量之间的欧几里得距离,我的问题是我正在返回一个更高维度的质心之间所有距离的矩阵。我想做的只是使用numpy返回一个向量,其中包含X和质心之间最近质心的所有距离,而不使用外部库。

预期的输出将是 X 和质心之间所有距离的向量距离,其中distance可变大小为X.shape[0]

标签: pythonpython-3.xnumpy

解决方案


我不知道您是否已经找到了解决方案,但有趣的是:

X = np.random.uniform(low=-0.2451, high=8.2, size=(300, 2))
centroids = np.array([[4,6],[5,8],[4,9]])

distances = np.array([np.linalg.norm(x-centroids, axis=1) for x in X])
nearest_dists = distances[np.arange(len(distances)), distances.argmin(axis=1)]

所以nearest_dists你有样本和它们最近的质心之间的欧几里得距离。如果您还离每个样本最近的质心感兴趣,答案是从 indices 给出的,这就是我使用不同变量名的原因。distanes.argmin(axis=1)


推荐阅读