擅长:python、mysql、java
<p>您根本不需要循环,因为两个数组之间的欧几里德距离只需计算差分的元素平方,如下所示:</p>
<pre><code>def euclidean_distance(v1, v2):
return np.sqrt(np.sum((v1 - v2)**2))
</code></pre>
<p>对于距离矩阵,有<a href="https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.euclidean_distances.html" rel="nofollow noreferrer">^{<cd1>}</a>:</p>
<pre><code>from sklearn.metrics.pairwise import euclidean_distances
euclidean_distances(a).round(2)
array([[0. , 2.83, 3.74, 0. , 2.83, 3.74],
[2.83, 0. , 2.83, 2.83, 0. , 2.83],
[3.74, 2.83, 0. , 3.74, 2.83, 0. ],
[0. , 2.83, 3.74, 0. , 2.83, 3.74],
[2.83, 0. , 2.83, 2.83, 0. , 2.83],
[3.74, 2.83, 0. , 3.74, 2.83, 0. ]])
</code></pre>
<hr/>
<pre><code>np.allclose(
eudis(series[2], series[3]),
euclidean_distance(series[2], series[3])
)
# True
</code></pre>