Python 如何在不花费太多时间的情况下检查列表是否最接近输入列表?

Python 如何在不花费太多时间的情况下检查列表是否最接近输入列表?,python,dtw,Python,Dtw,我有一个包含许多列表的列表。我使用一种dtw方法,使用fastdtw python包计算输入列表和列表中的列表之间的距离。这给了我一个距离列表,从中选择最小值,并将其估计为最接近输入数组的距离。这个过程可以工作,但是如果列表的数量和长度都很大,那么它会占用大量的CPU和时间 from fastdtw import fastdtw import scipy.spatial.distance as ssd inputlist = [1,2,3,4,5] complelte_list = [[1,1

我有一个包含许多列表的列表。我使用一种dtw方法,使用fastdtw python包计算输入列表和列表中的列表之间的距离。这给了我一个距离列表,从中选择最小值,并将其估计为最接近输入数组的距离。这个过程可以工作,但是如果列表的数量和长度都很大,那么它会占用大量的CPU和时间

from fastdtw import fastdtw
import scipy.spatial.distance as ssd

inputlist = [1,2,3,4,5]
complelte_list = [[1,1,3,9,1],[1,2,6,4],[9,8,7,4,2]]
dst = []
for arr in complete_lists:
   distance, path = fastdtw(arr,inputlist,dist=ssd.euclidean)
   dst.append(distance)

实际上,如果没有附加条件,就不可能写出比线性时间更好的算法。您可以在单独的线程中对每个数组进行搜索,这样会更快。

这个问题可能不够详细,无法得到一个好的答案。接近输入的数组意味着什么?有许多方法可以加快搜索速度,但它们通常利用数据中的某些规律,可能需要不同的数据结构。例如,对于排序列表,您可以进行二进制搜索而不是线性搜索。此外,同时更改数据类型也可以显著提高性能。