python - 如何从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。谁能解释一下?
解决方案
你应该返回波纹管:
return numpy.sqrt(numpy.sum((a_points-b_points)**2, axis=-1))
你应该np.sum
沿着最后一个轴。如果您不指定axis=-1
,则np.sum()
将对所有元素求和。
推荐阅读
- sql - 根据多个表中的条件检索结果
- javascript - 应用程序中断,警告 Uncaught TypeError: Cannot read property 'some' of undefined in React
- javascript - TypeError:usert.addItem 不是函数
- android - 如何修复 Spinner 在片段中调用 OnItemSelected 后无法正确显示所选项目?
- regex - 如何用逗号替换某种模式后的空格?
- docusignapi - DocuSign:重定向 URI 未正确注册错误
- javascript - 如何根据状态值创建不同的输出
- android - 在自定义 FrameLayout 视图中启用 `onClick` 方法
- graphql - 你能传播一个 GraphQL 字段吗?
- awk - 如何在 awk 中打印记录的行号?