擅长:python、mysql、java
<p>虽然你可以使用矢量化,@Karl的方法在使用numpy数组时会比较慢。</p>
<p>更简单的方法是只做<code>np.hypot(*(points - single_point).T)</code>。(转置假定点是Nx2数组,而不是2xN。如果是2xN,则不需要<code>.T</code>。</p>
<p>不过,这有点不可读,所以您可以像这样更清楚地写出来(使用一些固定的示例数据…):</p>
<pre><code>import numpy as np
single_point = [3, 4]
points = np.arange(20).reshape((10,2))
dist = (points - single_point)**2
dist = np.sum(dist, axis=1)
dist = np.sqrt(dist)
</code></pre>