在python中,对于标量,math.acos()是否比numpy.arccos()快?

2024-05-09 02:56:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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版本有什么缺点吗?


Tags: 函数importnumpy标准asnp数学math
1条回答
网友
1楼 · 发布于 2024-05-09 02:56:12

对标量使用math模块中的函数是非常好的。^{}函数可能会慢一些,因为

如果这种性能差异对您的问题很重要,则应检查是否确实不能使用数组操作。正如user2357112在评论中所说,数组才是numpy真正擅长的。

相关问题 更多 >

    热门问题