Python 计算长度不等序列的距离矩阵

Python 计算长度不等序列的距离矩阵,python,numpy,hierarchical-clustering,distance-matrix,dtw,Python,Numpy,Hierarchical Clustering,Distance Matrix,Dtw,我有一个多序列(长度不等)的形式: series = [ [1, 2, 5, 6, 9, 1], [2, 6, 1, 4, 5], [3, 5, 6, 7, 1, 4, 8, 7, 9], [4, 3, 2, 1], ... [2, 9, 7, 6, 5] ] shape = (38, ) 序列长度约为1000-2000。共有38个序列。我需要对这

我有一个多序列(长度不等)的形式:

series = [ [1, 2, 5, 6, 9, 1],
           [2, 6, 1, 4, 5],
           [3, 5, 6, 7, 1, 4, 8, 7, 9],
           [4, 3, 2, 1],
           ...
           [2, 9, 7, 6, 5]
         ] 
         shape = (38, )
序列长度约为1000-2000。共有38个序列。我需要对这些进行分层聚类,为此我定义了一个基于加权DTW(动态时间扭曲)的自定义距离度量:

是否有一种方法可以使用myMetric作为距离度量有效地计算上述序列的距离矩阵?在整个序列中进行迭代将是O(n^2),并且在我的系统上对38个序列花费的时间太长。另外,我试着用

dist=成对距离(系列,公制=myMetric)

但这要求序列长度相等,并引发以下错误:

ValueError: setting an array element with a sequence.

不能在少于O(n^2)的时间内计算O(n^2)大小的输出。@user2357112我明白,我正在寻找其他方法来减少计算时间。例如,dist(u,v)=dist(v,u),所以我只需要计算一次。我可以编写自己的函数,但不知道是否有一个库已经提供了更好的方法。您应该重写代码以利用。您可以尝试填充所有序列并修改距离函数以处理填充。然后可以更容易地在C级代码中使用numpy进行处理。当然,复杂性将保持不变。@C.Yduqoli我目前正在研究相同的,听起来绝对合理。谢谢不能在少于O(n^2)的时间内计算O(n^2)大小的输出。@user2357112我明白,我正在寻找其他方法来减少计算时间。例如,dist(u,v)=dist(v,u),所以我只需要计算一次。我可以编写自己的函数,但不知道是否有一个库已经提供了更好的方法。您应该重写代码以利用。您可以尝试填充所有序列并修改距离函数以处理填充。然后可以更容易地在C级代码中使用numpy进行处理。当然,复杂性将保持不变。@C.Yduqoli我目前正在研究相同的,听起来绝对合理。谢谢
ValueError: setting an array element with a sequence.