相关疑难解决方法(0)

有效地检测python中的符号更改

我想完成这个人做的事情:

Python - 计算符号更改

但是我需要优化它以超快速运行.简而言之,我想要一个时间序列,并告诉每次它越过零(改变符号).我想记录过零点之间的时间.由于这是真实的数据(32位浮点数),我怀疑我每个都有一个正好为零的数字,所以这并不重要.我目前有一个计时程序,所以我会把你的结果计算在内,看看谁赢了.

我的解决方案给出(微秒):

open data       8384
sign data       8123
zcd data        415466
Run Code Online (Sandbox Code Playgroud)

如您所见,过零检测器是缓慢的部分.这是我的代码.

import numpy, datetime

class timer():
    def __init__(self):
        self.t0 = datetime.datetime.now()
        self.t = datetime.datetime.now()
    def __call__(self,text='unknown'):
        print text,'\t',(datetime.datetime.now()-self.t).microseconds
        self.t=datetime.datetime.now()

def zcd(data,t):
    sign_array=numpy.sign(data)
    t('sign data')
    out=[]
    current = sign_array[0]
    count=0
    for i in sign_array[1:]:
        if i!=current:
            out.append(count)
            current=i
            count=0
        else: count+=1
    t('zcd data')
    return out

def main():
    t = timer()
    data = numpy.fromfile('deci.dat',dtype=numpy.float32)
    t('open data')
    zcd(data,t)

if __name__=='__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

python math performance numpy

29
推荐指数
4
解决办法
4万
查看次数

标签 统计

math ×1

numpy ×1

performance ×1

python ×1