<p>我认为您正在寻找这个(首先将数据导入numpy数组,或者使用熊猫数据帧中的<code>.to_numpy()</code>):</p>
<pre><code>from scipy.spatial import KDTree
pts_nn = np.hstack((pts, np.stack(KDTree(pts).query(pts, k=2))[:,:,1].T))
</code></pre>
<p>其中<code>pts</code>是点的<code>Nx3</code>数组(它实际上可以是任何维度点)。第4列是到最近邻的距离,第5列是最近邻行的索引</p>
<p>示例代码:</p>
<pre><code>N = 10
pts = np.random.random((N, 3))
pts_nn:
distance to nearest
nearest neighbor
X Y Z neighbor index
| | | | |
v v v v v
[[0.36154214 0.11883743 0.04484198 0.15207073 6. ]
[0.26106654 0.25574324 0.45306327 0.20522814 4. ]
[0.15989573 0.55955844 0.63199334 0.35385276 8. ]
[0.21143747 0.47216402 0.11990295 0.22398747 5. ]
[0.10244485 0.12636136 0.43829583 0.20522814 1. ]
[0.0101051 0.41025922 0.19608337 0.13800542 8. ]
[0.24196598 0.03731428 0.09154342 0.15207073 0. ]
[0.78249018 0.81468931 0.21105137 0.11227299 9. ]
[0.06798827 0.41764963 0.32114501 0.13800542 5. ]
[0.86526876 0.74024578 0.22558034 0.11227299 7. ]]
</code></pre>