在使用SciPy和NumPy的项目中,何时应该使用
scipy.pi
,何时应该使用numpy.pi
,还是只使用math.pi
?这些值之间有什么区别吗?scipy.pi
,何时应该使用numpy.pi
,还是只使用math.pi
?这些值之间有什么区别吗?>>> import math
>>> import numpy as np
>>> import scipy
>>> math.pi == np.pi == scipy.pi
True
numpy
或者scipy
,我会使用math.pi
,因为它在标准库中。但正如你所说,无论哪个模块导入都可以使用pi,因为它们的值都是相同的。 - mgilsonnp.pi
,但仅为了获取pi
而导入NumPy是没有意义的,因为它已经在math
中了。 - asmeurer需要注意的是,并非所有的程序库都使用相同的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
math.pi == float(sympy.pi)
返回 True
。 - Muhammad Yasirroniscipy.pi
恰好等于math.pi
;事实上,它被定义为:import math as _math
pi = _math.pi
math.pi
被定义为等于 3.14159265358979323846
,而 numpy.pi
被定义为等于 3.141592653589793238462643383279502884
;两者都远高于 Python 中浮点数的 15 位精度,因此使用哪个都无所谓。np.pi
或 scipy.pi
而导入它们将增加不必要的依赖关系,而 math
是 Python 标准库,因此不存在依赖问题。例如,在 Python 的 tensorflow 代码中使用 pi
,可以使用 tf.constant(math.pi)
。