numpy测量时间 - 语法错误

时间:2014-02-13 08:37:31

标签: python numpy time

我想通过numpy测量时间,但我不确定我是否有正确的论据。

import numpy as np
import timeit

def svdsolve(a,b):
    u,s,v = np.linalg.svd(a)
    c = np.dot(u.T,b)
    w = np.linalg.solve(np.diag(s),c)
    x = np.dot(v.T,w)
    return x


A_=np.fromfile('dataA.bin',count=-1,dtype=np.float32)
B_=np.fromfile('dataB.bin',count=-1,dtype=np.float32)


s='svdsolve({0},{1})'.format(A,B)

mytime= timeit.Timer(stmt=s,setup='import numpy').timeit(100)

print mytime

现在它给了我:

  

文件“/usr/lib64/python2.7/timeit.py”,第136行, init       code = compile(src,dummy_src_name,“exec”)文件“”,第6行       svdsolve([[1.86248358e + 09 1.54404045e + 09]                                                  ^ SyntaxError:语法无效

另外,我没有理解(我没有找到参考)关于在计时器传递什么参数。 而且我不确定如何使用重复timeit(100)

1 个答案:

答案 0 :(得分:3)

NumPy数组的strrepr都不能保证产生可用于重建原始数组的输出。 (format使用str,但repr无效。)而是将import数组放入定时代码的命名空间。假设此代码作为脚本运行,那将是

mytime = timeit.Timer(stmt='svdsolve(A, B)',
                      setup='from __main__ import A, B, svdsolve'
                      ).timeit(100)