首页 > 解决方案 > 如何从numpy中的指定数组获取欧几里德距离?

问题描述

我试图通过计算欧几里得距离来生成特定的数组,我得到了不同的结果

import numpy
def find_eucledian_distances(a_points, b_points):
  return numpy.sqrt(numpy.sum((a_points-b_points)**2))

a = np.array([[3.0, 4.0],
          [-3.0, -6.0],
          [-2.5, 6.3]])
b = np.array([[0.0, 0.0],
          [2.0, 6.0],
          [4.5, -8.3]])
d = find_eucledian_distances(a, b)

print(d)
print(d.shape)

这是两个预期结果 预期结果:[ 5. 13. 16.19135572] 预期结果:(3,)

但结果我得到了 21.35790251873999。谁能解释一下?

标签: pythonpython-3.xjupyter-notebook

解决方案


你应该返回波纹管:

return  numpy.sqrt(numpy.sum((a_points-b_points)**2, axis=-1))

你应该np.sum沿着最后一个轴。如果您不指定axis=-1,则np.sum()将对所有元素求和。


推荐阅读