我正在尝试通过计算欧几里得距离来生成特定的数组,但结果却有所不同
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/