我正在用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
这比10倍的加速还快!我几乎对所有的标准数学函数都使用了numpy,而且我只是假设它是经过优化的,并且至少和math
一样快。对于足够长的向量,numpy.arccos()最终将战胜使用math.acos()的循环,但是由于我只使用标量大小写,因此使用math.acos()、math.asin()、math.atan()代替numpy版本有什么缺点吗?
对标量使用} 函数可能会慢一些,因为
math
模块中的函数是非常好的。^{如果这种性能差异对您的问题很重要,则应检查是否确实不能使用数组操作。正如user2357112在评论中所说,数组才是
numpy
真正擅长的。相关问题 更多 >
编程相关推荐