scipy.pi、numpy.pi或math.pi之间有区别吗?

wecizke3  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(116)

在一个使用SciPy和NumPy的项目中,什么时候应该使用scipy.pi vs numpy.pi vs仅仅使用math.pi?这些价值观之间有区别吗?

dldeef67

dldeef671#

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

所以没关系,它们都是相同的值。
所有三个模块都提供pi值的唯一原因是,如果您只使用三个模块中的一个,则可以方便地访问pi,而无需导入另一个模块。他们没有提供不同的π值。

qni6mghb

qni6mghb2#

需要注意的一点是,当然,并不是所有的库都对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
ctzwtxfj

ctzwtxfj3#

如果我们看它的源代码,scipy.pi就是math.pi;事实上,它被定义为

import math as _math
pi = _math.pi

在它们的源代码中,math.pi被定义为等于3.14159265358979323846numpy.pi被定义为等于3.141592653589793238462643383279502884;这两个函数的精度都远远高于Python中浮点数的15位精度,所以你使用哪一个并不重要。
也就是说,如果你还没有使用numpy或scipy,只为np.piscipy.pi导入它们会增加不必要的依赖性,而math是一个Python标准库,所以没有依赖性问题。例如,对于python中tensorflow代码中的pi,可以使用tf.constant(math.pi)

相关问题