首页 > 解决方案 > 我想遍历 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]]

标签: python

解决方案


您要做的基本上是找到给定数组中最小的 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]]

推荐阅读