如何加快numpy向量上的移动窗口操作

时间:2016-05-20 09:39:30

标签: python numpy

我有一个函数(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

0 个答案:

没有答案