pollen-robotics/dtw
PythonDTW (Dynamic Time Warping) python module
pythondtwdistance-measuresdistance-metricdistance
Métricas principais
Crescimento de estrelas
Estrelas
1.2k
Forks
236
Crescimento semanal
+1
Issues
14
5001k
out. de 2014out. de 2016out. de 2018out. de 2020out. de 2022out. de 2024out. de 2026
ArtefatosPyPI
README
Dynamic Time Warping Python Module
Dynamic time warping is used as a similarity measured between temporal sequences. This package provides two implementations:
- the basic version (see here) for the algorithm
- an accelerated version which relies on scipy cdist (see https://github.com/pierre-rouanet/dtw/pull/8 for detail)
import numpy as np
# We define two sequences x, y as numpy array
# where y is actually a sub-sequence from x
x = np.array([2, 0, 1, 1, 2, 4, 2, 1, 2, 0]).reshape(-1, 1)
y = np.array([1, 1, 2, 4, 2, 1, 2, 0]).reshape(-1, 1)
from dtw import dtw
manhattan_distance = lambda x, y: np.abs(x - y)
d, cost_matrix, acc_cost_matrix, path = dtw(x, y, dist=manhattan_distance)
print(d)
>>> 2.0 # Only the cost for the insertions is kept
# You can also visualise the accumulated cost and the shortest path
import matplotlib.pyplot as plt
plt.imshow(acc_cost_matrix.T, origin='lower', cmap='gray', interpolation='nearest')
plt.plot(path[0], path[1], 'w')
plt.show()
Result of the accumulated cost matrix and the shortest path (in white) found:

Other examples are available as notebook
Installation
python -m pip install dtw
It is tested on Python 2.7, 3.4, 3.5 and 3.6. It requires numpy and scipy.