python - 使用欧几里得距离在数组中查找最相似的索引
问题描述
所以我有一个数组并给定某一行,我想使用欧几里得距离输出最相似的行?我知道它在 scipy.spatial.distance 但我不知道如何实现它!
所以例如:
S = np.array([[1, 10, 2, 5, 1],
[10, 3, 1, 3, 3],
[2, 2, 9, 8, 5],
[9, 5, 4, 1, 4],
[8, 7, 5, 5, 3],
[7, 2, 9, 9, 8]])
row = [7, 2, 9, 9, 8]
将输出最相似的行是 5
蒂亚!
解决方案
通过使用带有参数的 numpy 函数,您可以非常快速地做到这一点(没有for
隐藏在理解列表中的慢循环):linalg.norm
axis=1
row_id = np.argmin(np.linalg.norm(S-row, axis=1))
print(S[row_id]) # Returns array([7, 2, 9, 9, 8])
推荐阅读
- asp.net - 使用带有 ASP .NET Membership 的 Active Directory LDAPS 身份验证的问题
- loops - 循环中的切片似乎保留了前一个/最后一个引用(取决于切片的长度)
- mysql - 如何在另一多行中选择mysql的一行
- postgresql - PostgreSQL 数据目录配置
- c++ - 使用 CMake 创建 QML 插件
- javascript - 单页应用程序中访问的链接在单击时不会改变颜色
- javascript - 在Vue.Js中单击“确定”后关闭模态对话框
- python - 将方程转换为 Python 语言
- node.js - req.files 未使用 express-fileupload 定义
- javascript - IOS上的Javascript问题