擅长:python、mysql、java
<p>由<a href="https://stackoverflow.com/a/69166733/2988730">blorgon</a>建议的numpy解决方案可能更快,但您也可以使用<a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.cdist.html" rel="nofollow noreferrer">^{<cd1>}</a>:</p>
<pre><code>>>> from scipy.spatial.distance import cdist
>>> cdist(a, b)**2
array([[ 18.29 , 112.45 , 308.6765],
[ 7.49 , 79.65 , 251.0165]])
</code></pre>
<p>这种方法的问题是,它取一个平方根,然后将其撤消。优点是它不使用大型中间阵列。您可以避免numpy中的某些中间产物,如下所示:</p>
<pre><code>>>> diff = b - a[:, np.newaxis]
>>> np.power(diff, 2, out=diff).sum(axis=2)
array([[ 18.29 , 112.45 , 308.6765],
[ 7.49 , 79.65 , 251.0165]])
</code></pre>