2012-09-28 138 views
89

En un proyecto que use SciPy y NumPy, ¿debo usar scipy.pi, numpy.pi o math.pi?¿Debo usar scipy.pi, numpy.pi o math.pi?

+4

No, el hecho de que todos estos módulos proporcionan la constante me dice que hay alguna razón para ello? –

+3

Es porque no siempre los usa todos, y no desea instalar e importar un módulo solo para obtener Pi. –

+7

@LevLevitsky Acabo de empezar 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 float). Así que no pensé que fuera una pregunta tonta ... –

Respuesta

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

Así que no importa, todos tienen el mismo valor.

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

+13

En igualdad de condiciones, usaría 'math.pi' simplemente porque está en la biblioteca estándar si el módulo no depende de' numpy' o 'scipy' de lo contrario - Pero como dices, usa pi en el que sea módulo que está importando para empezar, porque todos tienen el mismo valor. – mgilson

+1

Si ya usa numpy use 'np.pi', pero no tiene sentido importar NumPy solo para' pi' cuando está en 'math'. – asmeurer

32

Una cosa a tener en cuenta es que no todas las bibliotecas usarán el mismo significado para pi, por supuesto, así que nunca está de más saber lo que estás usando. Por ejemplo, la biblioteca matemática simbólica representación de sympy de pi no es el mismo que el de matemáticas 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 
+2

¿Por qué se supone que 'SymPy' tiene un valor diferente?! ... – Roboticist

+8

sympy Pi no se almacena como una constante/flotante, es un objeto que contiene la constante – Naib

+8

sympy's es exactamente pi, representada simbólicamente para hacer cálculos simbólicos. los otros son aproximaciones de punto flotante para hacer matemática de punto flotante. – endolith