【发布时间】:2021-07-05 23:55:16
【问题描述】:
我有一个二维网格上的离散点数据集,尺寸为 4x4,每个都有给定的 x 和 y 坐标,例如:
x_coord, y_coord
0.5 2.1
0.8 3.2
3.3 1.1
2.8 0.6
1.9 1.0
我想遍历每个网格点以找到到第三近邻的距离。所以我想知道以下坐标到第三近邻的距离:
[0,0]
[0,1]
[0,2]
[0,3]
[1,0]
[1,1]
[1,2]
[1,3]
[2,0]
[2,1]
[2,2]
[2,3]
[3,0]
[3,1]
[3,2]
[3,3]
我认为我的麻烦在于如何通过网格并计算到最近邻居的距离。我只是在学习 python,所以我在嵌套 for 循环方面的经验非常有限,但我猜这就是我需要的。
目前为止
from sklearn.neighbors import NearestNeighbors
import numpy as np
x=[0.5,0.8,3.3,2.8,1.9]
y=[2.1,3.2,1.1,0.6,1.0]
myarray = np.array([x,y])
myarray_trans = np.transpose(myarray)
myarray_trans
nbrs = NearestNeighbors(n_neighbors=3, algorithm='ball_tree').fit(myarray_trans)
distances, indices = nbrs.kneighbors(myarray_trans)
现在使用它作为我的训练集,我需要遍历整个网格以从离散列表中找到到第三近邻的距离。我试过这个:
for i in range(0,4):
for j in range(0,4):
distances2[i,j], indices[i,j] = nbrs.kneighbors([i,j])
我收到一条错误消息,提示“预期的 2D 数组,得到 1D 数组:array=[0 0]
我必须在更大的数据集上执行此操作,该数据集的网格尺寸更像 500 x 500,所以这是一个示例。
【问题讨论】:
-
嘿,你最好在遇到错误时使用堆栈,这样我们就可以看到哪个调用失败了,而不是从你说的内容中猜测。
标签: python for-loop multidimensional-array nested nearest-neighbor