擅长:python、mysql、java
<p>近似等效效率的方法可能是scipy的<a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.KDTree.html" rel="nofollow noreferrer">^{<cd1>}</a>或更好的<a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.cKDTree.html" rel="nofollow noreferrer">^{<cd2>}</a>:</p>
<pre><code>from scipy.spatial import KDTree
kdt = KDTree(P.T)
kdt.query(PQ.T)
</code></pre>
<p>这里<code>P</code>和<code>PQ</code>是来自<a href="https://www.mathworks.com/help/matlab/ref/dsearchn.html" rel="nofollow noreferrer">^{<cd5>}</a>文档的点和查询点。MATLAB使用第一个维度作为点的维度,而scipy使用最后一个维度,因此使用转置</p>
<p>与MATLAB方法不同,MATLAB方法是一步完成的,使用<code>KDTree</code>可以分两步完成:首先构建树对象,然后在树对象上运行<a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.KDTree.query.html#scipy.spatial.KDTree.query" rel="nofollow noreferrer">^{<cd7>}</a></p>