【问题标题】:Should I use scipy.pi, numpy.pi, or math.pi?我应该使用 scipy.pi、numpy.pi 还是 math.pi?
【发布时间】:2012-09-20 15:58:18
【问题描述】:

在使用 SciPy 和 NumPy 的项目中,我应该使用 scipy.pinumpy.pi 还是 math.pi

【问题讨论】:

  • 不,所有这些模块都提供常量的事实告诉我,这是有原因的?
  • 这是因为您并不总是使用所有这些,并且您不想安装和导入模块只是为了获取 Pi。
  • @LevLevitsky 我刚开始使用 python,我注意到 math.exp 和 numpy.exp 之间存在差异(numpy.exp 可以获取列表,但 math.exp 需要浮点数)。所以我不认为这是一个愚蠢的问题......

标签: python numpy scipy pi


【解决方案1】:
>>> import math
>>> import numpy as np
>>> import scipy
>>> math.pi == np.pi == scipy.pi
True

所以没关系,都是一样的值。

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

【讨论】:

  • 在所有其他条件相同的情况下,我会使用 math.pi 只是因为如果模块不依赖于 numpyscipy 否则它在标准库中——但正如你所说,在您要导入的任何模块中使用 pi 开始,因为它们都是相同的值。
  • 如果您已经在使用 numpy,请使用 np.pi,但在 pi 中导入 NumPy 是没有意义的。
【解决方案2】:

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

【讨论】:

  • sympy Pi 不存储为常量/浮点数,它是一个包含常量的对象
  • sympy 正好是 pi,用符号表示,用于进行符号数学运算。其他的是浮点数近似值,用于进行浮点数学运算。
猜你喜欢
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 2015-10-16
  • 2023-03-06
  • 2013-02-20
  • 2011-07-31
  • 2010-12-23
  • 2015-05-22
相关资源
最近更新 更多