Jam*_*mes 5 python optimization numpy
In [49]: timeit.timeit("np.exp(100)", setup="import numpy as np")
Out[49]: 1.700455904006958
In [50]: timeit.timeit("np.e**100", setup="import numpy as np")
Out[50]: 0.16629505157470703
Run Code Online (Sandbox Code Playgroud)
是否有任何理由使用np.e**100的CPython实现比使用numpy版本慢得多?numpy版本不应该更快,因为它被推到C代码?
一个明显的原因是将np.exp
其设置为处理数组,并且在计算输入的类型/尺寸方面可能涉及一些开销。尝试以下情况,您可能会发现差异减少或消失:
timeit.timeit("np.exp(x)",
setup="import numpy as np; x = np.array([99, 100, 101])")
# This actually seems to be faster than just calculating
# it for a single value
Out[7]: 1.0747020244598389
timeit.timeit("[np.e**n for n in x]",
setup="import numpy as np; x = [99, 100, 101]")
Out[8]: 0.7991611957550049
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10262 次 |
最近记录: |