我应该使用scipy.pi,numpy.pi还是math.pi?


137

在使用SciPy的和NumPy的一个项目,我应该使用scipy.pinumpy.pimath.pi


6
不,所有这些模块都提供常数的事实告诉我,这是否有某些原因?
道格拉斯·B·斯台

3
这是因为您并不总是使用所有它们,并且您不想为了获得Pi而安装和导入模块。
Lev Levitsky

11
@LevLevitsky我刚开始使用python,我注意到math.exp和numpy.exp之间有区别(numpy.exp可以列出一个列表,但math.exp需要浮点数)。所以我不认为这是一个愚蠢的问题……
Douglas B. Staple

Answers:


197
>>> import math
>>> import numpy as np
>>> import scipy
>>> math.pi == np.pi == scipy.pi
True

所以没关系,它们都是相同的值。

这三个模块均提供pi值的唯一原因是,如果仅使用三个模块之一,则可以方便地访问pi,而不必导入另一个模块。他们没有为pi提供不同的值。


15
在所有其他条件相同的情况下,math.pi如果模块不依赖numpyscipy以其他方式使用,我会简单地使用它,因为它位于标准库中-但是正如您所说的,请在要导入的模块中使用pi,因为它们是所有相同的值。
mgilson 2012年

3
如果您已经在使用numpy use np.pi,则仅导入NumPy pi时就没有意义math
asmeurer '16

42

需要注意的一件事是,当然,并非所有库都将对pi使用相同的含义,因此知道您使用的内容永远不会有任何伤害。例如,符号数学库Sympy对pi的表示与math和numpy不同:

import math
import numpy
import scipy
import sympy

print(math.pi == numpy.pi)
> True
print(math.pi == scipy.pi)
> True
print(math.pi == sympy.pi)
> False

9
sympy Pi不会存储为常量/浮点数,而是包含常量的对象
Naib 2015年

22
sympy恰好是pi(用符号表示),用于执行符号数学。其他是进行浮点数学运算的浮点近似值。
endolith '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.