我是 Python 的新手,我需要实现一个聚类算法。为此,我需要计算给定输入数据之间的距离。
考虑以下输入数据 -
[[1,2,8],
[7,4,2],
[9,1,7],
[0,1,5],
[6,4,3]]
我想要在这里实现的是,我想计算 [1,2,8] 与所有其他点的距离,并找到距离最小的点。
我必须对所有其他点重复这一点。
我试图用 FOR 循环来实现它,但我确信 SciPy/NumPy 一定有一个函数可以帮助我有效地实现这个结果。
我在网上查看,但“pdist”命令无法完成我的工作。
有人可以指导我吗?
TIA
原文由 Adhish Thite 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
np.linalg.norm
结合广播( _numpy 外减法_),你可以这样做:a[:,None]
插入一个新轴a
,a - a[:,None]
将由于广播而逐行减法。np.linalg.norm
np.sqrt(np.sum(np.square(...)))
:元素
[0,1]
,[0,2]
例如对应于:分别。