¿Debo usar scipy.pi, numpy.pi o math.pi?

137

En un proyecto utilizando SciPy y NumPy, debería utilizar scipy.pi, numpy.pio math.pi?

Douglas B. Grapa
fuente
66
No, el hecho de que todos estos módulos proporcionen la constante me dice que hay alguna razón para eso.
Douglas B. Staple
3
Es porque no siempre los usa a todos, y no querría instalar e importar un módulo solo para obtener Pi.
Lev Levitsky
11
@LevLevitsky Acabo de comenzar a usar python y noté que hay una diferencia entre math.exp y numpy.exp (numpy.exp puede tomar una lista pero math.exp quiere un flotador). Así que no pensé que fuera una pregunta tonta ...
Douglas B. Staple

Respuestas:

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

Entonces no importa, todos tienen el mismo valor.

La única razón por la que los tres módulos proporcionan un pivalor es que si está utilizando solo uno de los tres módulos, puede tener acceso convenientemente a pi sin tener que importar otro módulo. No están proporcionando valores diferentes para pi.

BrenBarn
fuente
15
En igualdad de condiciones, lo usaría math.pisimplemente porque está en la biblioteca estándar si el módulo no depende numpyo scipyno, pero como usted dice, use pi en cualquier módulo que esté importando para empezar porque Todo el mismo valor.
mgilson
3
Si ya está usando Numpy Use np.pi, pero no tiene sentido importar NumPy solo para picuando está dentro math.
asmeurer
42

Una cosa a tener en cuenta es que no todas las bibliotecas usarán el mismo significado para pi, por supuesto, por lo que nunca está de más saber lo que está usando. Por ejemplo, la representación simbólica de pi de la biblioteca matemática Sympy no es lo mismo que matemática y 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
fuente
9
sympy Pi no se almacena como una constante / flotante, es un objeto que contiene la constante
Naib
22
sympy's es exactamente pi, representado simbólicamente, para hacer matemática simbólica. los otros son aproximaciones de coma flotante para hacer cálculos de coma flotante.
endolito