Devo usar scipy.pi, numpy.pi ou math.pi?

137

Em um projeto usando SciPy e NumPy, eu deveria usar scipy.pi, numpy.piou math.pi?

Douglas B. Staple
fonte
6
Não, o fato de todos esses módulos fornecerem a constante me diz que há alguma razão para isso?
Douglas B. Staple
3
É porque você nem sempre usa todos eles e não deseja instalar e importar um módulo apenas para obter o Pi.
Lev Levitsky
11
@LevLevitsky Acabei de começar a usar python e notei que há uma diferença entre math.exp e numpy.exp (numpy.exp pode fazer uma lista, mas math.exp quer um float). Então eu não acho que foi uma pergunta idiota ...
Douglas B. Staple

Respostas:

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

Portanto, não importa, todos têm o mesmo valor.

A única razão pela qual os três módulos fornecem um pivalor é que, se você estiver usando apenas um dos três módulos, poderá acessar convenientemente o pi sem precisar importar outro módulo. Eles não estão fornecendo valores diferentes para pi.

BrenBarn
fonte
15
Todas as outras coisas são iguais, eu usaria math.pisimplesmente porque está na biblioteca padrão se o módulo não depender numpyou scipynão - mas, como você diz, use pi em qualquer módulo que esteja importando para começar, porque eles são todos com o mesmo valor.
mgilson
3
Se você já estiver usando o uso numpy np.pi, mas não faz sentido importar o NumPy apenas para piquando está dentro math.
asmeurer 11/08/16
42

Uma coisa a observar é que nem todas as bibliotecas usarão o mesmo significado para pi, é claro, portanto nunca é demais saber o que você está usando. Por exemplo, a representação simbólica de pi da biblioteca matemática simbólica, Sym, não é a mesma que math e 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
jbay
fonte
9
SymPy Pi não é armazenado como uma constante / float, é um objeto que contém a constante
Naib
22
o sympy's é exatamente pi, representado simbolicamente, para fazer matemática simbólica. os outros são aproximações de ponto flutuante para fazer matemática de ponto flutuante.
endolith 22/02