相关疑难解决方法(0)

使用numpy或cython进行高效的成对DTW计算

我试图计算numpy数组中包含的多个时间序列之间的成对距离.请参阅下面的代码

print(type(sales))
print(sales.shape)

<class 'numpy.ndarray'>
(687, 157)
Run Code Online (Sandbox Code Playgroud)

因此,sales包含长度为157的687个时间序列.使用pdist计算时间序列之间的DTW距离.

import fastdtw
import scipy.spatial.distance as sd

def my_fastdtw(sales1, sales2):
    return fastdtw.fastdtw(sales1,sales2)[0]

distance_matrix = sd.pdist(sales, my_fastdtw)
Run Code Online (Sandbox Code Playgroud)

---编辑:尝试没有pdist()-----

distance_matrix = []
m = len(sales)    
for i in range(0, m - 1):
    for j in range(i + 1, m):
        distance_matrix.append(fastdtw.fastdtw(sales[i], sales[j]))
Run Code Online (Sandbox Code Playgroud)

---编辑:并行化内循环-----

from joblib import Parallel, delayed
import multiprocessing
import fastdtw

num_cores = multiprocessing.cpu_count() - 1
N = 687

def my_fastdtw(sales1, sales2):
    return fastdtw.fastdtw(sales1,sales2)[0]

results = [[] for i in range(N)] …
Run Code Online (Sandbox Code Playgroud)

python numpy cython joblib

11
推荐指数
2
解决办法
4620
查看次数

标签 统计

cython ×1

joblib ×1

numpy ×1

python ×1