回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有如下6个时间序列数据,即t1、t2、t3、t4、t5和t6</p>
<pre><code>import numpy as np
series = np.array([
[0., 0, 1, 2, 1, 0, 1, 0, 0],
[0., 1, 2, 0, 0, 0, 0, 0, 0],
[1., 2, 0, 0, 0, 0, 0, 1, 1],
[0., 0, 1, 2, 1, 0, 1, 0, 0],
[0., 1, 2, 0, 0, 0, 0, 0, 0],
[1., 2, 0, 0, 0, 0, 0, 1, 1]])
</code></pre>
<p>我想从这6个时间序列中创建一个欧几里德距离矩阵,格式为(即6*6,其中<code>x</code>表示相应的欧几里德距离):</p>
<pre><code> t1 t2 t3 t4 t5 t6
t1 0 x x x x x
t2 x 0 x x x x
t3 x x 0 x x x
t4 x x x 0 x x
t5 x x x x 0 x
t6 x x x x x 0
</code></pre>
<p>我目前正在按如下方式手动构造此矩阵(在这个SO问题中:<a href="https://stackoverflow.com/questions/37794849/efficient-and-precise-calculation-of-the-euclidean-distance">Efficient and precise calculation of the euclidean distance</a>此方法具有最高的性能)</p>
<p>例如,计算t3和t6之间的欧氏距离</p>
<pre><code>def eudis(v1, v2):
dist = [(a - b)**2 for a, b in zip(v1, v2)]
dist = math.sqrt(sum(dist))
return dist
eudis(t3, t6)
</code></pre>
<p>然而,我相信在python中可以有更简单、计算效率更高的方法来实现这一点。如果你有什么建议,请告诉我</p>
<p>如果需要,我很乐意提供更多细节</p>