我在Python中进行了一些带有大量几何计算的科学计算,我在使用numpy与标准math库之间遇到了很大的差异.
>>> x = timeit.Timer('v = np.arccos(a)', 'import numpy as np; a = 0.6')
>>> x.timeit(100000)
0.15387153439223766
>>> y = timeit.Timer('v = math.acos(a)', 'import math; a = 0.6')
>>> y.timeit(100000)
0.012333301827311516
Run Code Online (Sandbox Code Playgroud)
这超过了10倍的加速!我正在使用几乎所有标准数学函数的numpy,我只是假设它已经过优化,至少和它一样快math.对于足够长的向量,numpy.arccos()最终将赢得与使用math.acos()的循环,但由于我只使用标量情况,使用math.acos(),math.asin()是否有任何缺点, math.atan()全面而不是numpy版本?