python - 我想遍历 for 循环以返回三个点
问题描述
points = array
def get_nearest_point(x, y, n_points):
dist = []
val = []
j = (x, y)
for z in range(n_points):
for i in range(len(points)):
dist += [Distance(points[i][0],points[i][1],x,y)]
a = dist.index(min(dist))
val.append(points[a])
dist.remove(min(dist))
return val
输出 :
get_nearest_point(50, 50,3)
[[54, 57]]
我想返回类似 [[54,57],[56,78],[78,90]]
解决方案
您要做的基本上是找到给定数组中最小的 3 个元素的索引。您可以使用numpy.argsort方法轻松完成此操作
无论如何,这里是你的代码 numpy :
import numpy as np
def get_nearest_point(x, y, n):
dist = [Distance(point[0], point[1], x, y) for point in points]
indices = np.argsort(dist)
return [points[i] for i in indices[:n]]
推荐阅读
- browser - 如何使 jar 文件在浏览器中作为 java 小程序运行
- swift - 展开 node.name.last() 时发现 nil
- python - 如何从 Python Dataframe 中的多个列中挑选出所有非 NULL 值
- ios - 安装 iPhone 配置实用程序时出错
- angular - 如何更改 Angular 2+ 剑道迷你图的条形颜色
- swift - Swift 和 Firebase 数据库 - 调用中缺少参数标签“andPriority”
- css - 给定这些类,这些 div 在 css 中会是什么颜色,为什么?
- haskell - 术语级访问时钟速率
- debugging - z390 断点、文件、parmfield
- c++ - struct timespec 可以重复用于 nanosleep 吗?