Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中的列表列表中搜索最接近的值_Python_Arrays_List_Numpy_Grid - Fatal编程技术网

在python中的列表列表中搜索最接近的值

在python中的列表列表中搜索最接近的值,python,arrays,list,numpy,grid,Python,Arrays,List,Numpy,Grid,我有一份清单: [[0, 2], [1, 3], [2, 5], [3, 2], [4, 5]] 以及列表中的值,例如:[4,0] 假设这是xy网格,我希望尽可能在列表中找到最接近的值。 我在这里看过了 更确切地说,这一行是:idx=np.array[np.linalg.normx+y表示x,y表示数组值].argmin 问题是它总结了x+y,所以可以说[1,3]是最接近的一个,在某些情况下可能是正确的,但不是所有情况下都是正确的,在这个特定情况下[3,2]更接近 请帮忙 In [4]: ar

我有一份清单:

[[0, 2], [1, 3], [2, 5], [3, 2], [4, 5]]
以及列表中的值,例如:[4,0]

假设这是xy网格,我希望尽可能在列表中找到最接近的值。 我在这里看过了 更确切地说,这一行是:idx=np.array[np.linalg.normx+y表示x,y表示数组值].argmin

问题是它总结了x+y,所以可以说[1,3]是最接近的一个,在某些情况下可能是正确的,但不是所有情况下都是正确的,在这个特定情况下[3,2]更接近

请帮忙

In [4]: arr = np.array([[0, 2], [1, 3], [2, 5], [3, 2], [4, 5]])

In [5]: value = np.array([4,0])

In [6]: np.linalg.norm(arr-value, axis=1)
Out[6]: array([ 4.47213595,  4.24264069,  5.38516481,  2.23606798,  5.        ])

In [7]: np.linalg.norm(arr-value, axis=1).argmin()
Out[7]: 3

In [8]: arr[np.linalg.norm(arr-value, axis=1).argmin()]
Out[8]: array([3, 2])
请注意,如果arr非常大,并且需要计算arr中与许多其他点最接近的点,则使用a会更有效,因为一旦KDTree中的数据占用log n时间,则搜索最近的点只需要Olog n时间。使用arr[norm….argmin]需要准时

如果你有scipy,你可以找到像这样的最近点:

In [22]: from scipy import spatial

In [23]: tree = spatial.KDTree(arr)

In [24]: distances, indices = tree.query([4, 0])

In [25]: tree.data[indices]
Out[25]: array([3, 2])
那么为什么[1,3]不是衣柜都是箱子呢?你能给我们举个例子吗?