【发布时间】:2020-11-09 12:21:36
【问题描述】:
我有一个 numpy 数组,其中包含 5 个点的坐标 (X,Y,Z):
Coordinates = np.array([[1000, 1000,10],[1003, 1003,10],[1004, 1004,10],[1002, 1002,10],[1001, 1001,10]])
另一方面,我有一个 Pandas 数据框,其中包含这 5 个点中每个点的变量值:
d = {"Values": [0.25, 0.24,0.23,0.3,0.22]}
df = pd.DataFrame(data=d)
使用 treeBall_Neighbors 我得到半径为 2m 内每个点的邻居的索引:
treeBall_Neighbors = sklearn.neighbors.BallTree(Coordinates, leaf_size=2)
indices_Neighbors=treeBall_Neighbors.query_radius(Coordinates[:], r=2)
最后我想将每个点的邻居的平均值添加到数据框中:
df["Neighbors_Values"]=df["Values"].iloc[indices_Neighbors.tolist()[:]].mean()
但遗憾的是,我收到错误“ValueError: setting an array element with a sequence”。我得到的唯一部分解决方案仅适用于第一行:
df["Neighbors_Values"]=df["Values"].iloc[indices_Neighbors.tolist()[0]].mean()
您知道如何在不循环的情况下获得其他值吗?最终结果应如下所示:
Values Neighbors_Values
0 0.25 0.235
1 0.24 0.256667
2 0.23 0.235
3 0.30 0.253333
4 0.22 0.256667
【问题讨论】: