scipy.pi、numpy.pi 或 math.pi 之间有区别吗? [已关闭]

问题描述 投票:0回答:3

在使用 SciPy 和 NumPy 的项目中,什么时候应该使用

scipy.pi
numpy.pi
、还是仅使用
math.pi
?这些值之间有区别吗?

python numpy math scipy pi
3个回答
244
投票
>>> import math
>>> import numpy as np
>>> import scipy
>>> math.pi == np.pi == scipy.pi
True

它们都是相同的值,所以使用哪一个并不重要。

所有三个模块都提供

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


51
投票

需要注意的一件事是,当然,并非所有库都会对 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
    

4
投票
如果我们看它的

源代码scipy.pi

正是
math.pi
;事实上,它的定义为

import math as _math pi = _math.pi
在他们的源代码中,

math.pi

定义等于3.14159265358979323846
并且
numpy.pi
定义等于3.141592653589793238462643383279502884
;两者都远高于 Python 中浮点数的 15 位精度,因此使用哪一个并不重要。

也就是说,如果您尚未使用 numpy 或 scipy,仅针对

np.pi

scipy.pi
 导入它们会添加不必要的依赖项,而 
math
 是 Python 标准库,因此不存在依赖关系问题。例如,对于 python 中的张量流代码中的 
pi
,可以使用 
tf.constant(math.pi)

© www.soinside.com 2019 - 2024. All rights reserved.