相关疑难解决方法(0)

哪个在Python中更快:x**.5还是math.sqrt(x)?

我一直在想这个问题.正如标题所说,哪个更快,实际功能还是简单地提升到半功率?

UPDATE

这不是过早优化的问题.这只是底层代码实际工作原理的问题.Python代码的工作原理是什么?

我发送了Guido van Rossum电子邮件,因为我真的很想知道这些方法的不同之处.

我的电子邮件:

在Python中至少有3种方法可以做平方根:math.sqrt,'**'运算符和pow(x,.5).我只是好奇每个实现的差异.谈到效率哪个更好?

他的回答是:

pow和**是等价的; math.sqrt不适用于复数,也不适用于C sqrt()函数的链接.至于哪一个更快,我不知道......

python performance

175
推荐指数
5
解决办法
6万
查看次数

Python中的指数 - 我应该更喜欢**运算符而不是math.pow和math.sqrt吗?

在我的领域中,将一些数字对齐,一起操作它们并取结果的平方根是很常见的.例如,这在毕达哥拉斯定理和RMS计算中完成.

在numpy中,我做了以下事情:

result = numpy.sqrt(numpy.sum(numpy.pow(some_vector, 2)))
Run Code Online (Sandbox Code Playgroud)

在纯python中会出现这样的情况:

result = math.sqrt(math.pow(A, 2) + math.pow(B,2)) # example with two dimensions.
Run Code Online (Sandbox Code Playgroud)

但是,我一直在使用这种纯Python形式,因为我发现它更紧凑,独立于导入,看似相同:

result = (A**2 + B**2)**0.5   # two dimensions
result = (A**2 + B**2 + C**2 + D**2)**0.5
Run Code Online (Sandbox Code Playgroud)

我听说有些人认为**运算符是一种黑客攻击,并且通过对它进行取幂来对数字进行求数0.5是不可读的.但我想问的是:

"有没有任何计算理由更喜欢前两种替代品而不是第三种替代品?"

谢谢阅读!

python math exponentiation

57
推荐指数
2
解决办法
12万
查看次数

使用数学模块中的平方根函数

我知道我可以使用找到表达式的平方根math.sqrt(x).

我也知道我可以找到平方根x**0.5.

两个为什么呢?这不是非pythonic吗?有什么用的math.sqrt()时候,我们可以直接将其提升到0.5次方?

python math square-root

3
推荐指数
1
解决办法
1116
查看次数

标签 统计

python ×3

math ×2

exponentiation ×1

performance ×1

square-root ×1