我有一个函数(drop_max),它根据数据中指定间隙之前和之后的长度L1和L2的两个区域之间的最小差异来查找值向量(dat)的步进变化。我正在使用列表理解来识别这些步骤变化,但发现操作相对较慢 - 对于大约20,000点的向量,几秒钟。由于我有> 10,000个矢量要检查,我想了解如何加快这个操作。
我在Windows 7/64机器上使用python 2.7
def drop_max(dat,L1,gap,L2):
L0 = len(dat)
Ltot = L1 + gap + L2
L1s = L1 + gap
Lhlf = Ltot/2
out = numpy.zeros(dat.shape)
tmp = numpy.array([numpy.min(dat[a:a+L1]) - numpy.max(dat[(a+L1s):(a+Ltot)]) for a in numpy.arange(0,L0-Ltot)])
tmp[tmp<0] = 0.0
out[Lhlf:Lhlf+len(tmp)] = tmp
return out