擅长:python、mysql、java
<p>我建议使用<code>pdist</code>和<code>squareform</code>from <code>scipy.spatial.distance</code></p>
<p>考虑以下点数组:</p>
<pre><code>a = np.array([[1,2,8], [7,4,2], [9,1,7], [0,1,5], [6,4,3]])
</code></pre>
<p>如果要显示点<code>[1,2,8]</code>与其他点之间的所有距离:</p>
<pre><code>squareform(pdist(a))
Out[1]: array([[ 0. , 8.71779789, 8.1240384 , 3.31662479, 7.34846923],
[ 8.71779789, 0. , 6.164414 , 8.18535277, 1.41421356],
[ 8.1240384 , 6.164414 , 0. , 9.21954446, 5.83095189],
[ 3.31662479, 8.18535277, 9.21954446, 0. , 7. ],
[ 7.34846923, 1.41421356, 5.83095189, 7. , 0. ]])
</code></pre>
<p>如果要显示点<code>[1,2,8]</code>与最近点之间的最短距离</strong>:</p>
<pre><code>sorted(squareform(pdist(a))[0])[1]
Out[2]: 3.3166247903553998
</code></pre>
<p><code>[0]</code>是第一个点的索引(<code>[1,2,8]</code>)</p>
<p><code>[1]</code>是第二个最小值的索引(以避免零)</p>
<p>如果要显示距<code>[1,2,8]</code>最近的点的索引</strong>:</p>
<pre><code>np.argsort(squareform(pdist(a))[0])[1]
Out[3]: 3
</code></pre>