我正在尝试通过计算欧几里得距离来生成特定的数组,但结果却有所不同

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。谁能解释?

最佳答案

您应该返回波纹管:

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


您应该沿最后一个轴np.sum。如果您未指定axis=-1,则np.sum()将汇总所有元素。

关于python - 如何从numpy中的指定数组获取欧几里得距离?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57830433/

10-11 22:44
查看更多