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?
Respuesta
>>> 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.
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
Si ya usa numpy use 'np.pi', pero no tiene sentido importar NumPy solo para' pi' cuando está en 'math'. – asmeurer
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
¿Por qué se supone que 'SymPy' tiene un valor diferente?! ... – Roboticist
sympy Pi no se almacena como una constante/flotante, es un objeto que contiene la constante – Naib
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
- 1. ¿Debo usar multiplicación o división?
- 2. ¿Debo usar Phobos o Tango?
- 3. ¿Debo usar alias o alias_method?
- 4. ¿Debo usar herencia o composición?
- 5. ¿Debo usar em o px?
- 6. ¿Debo usar eval() o call_user_func()?
- 7. ¿Debo usar byte o int?
- 8. ¿Debo usar CouchDB o SimpleDB?
- 9. ¿Debo usar Pilones o Pirámide?
- 10. ¿Debo usar Flash o Flex?
- 11. ¿Debo usar int o UInt16?
- 12. ¿Debo usar doble o flotar?
- 13. Debo usar DataInputStream o BufferedInputStream
- 14. ¿Debo usar ArrayList o IList
- 15. ¿Debo usar horquilla o hilos?
- 16. ¿Debo usar Meteor.startup() o $ (function() {})
- 17. ¿Debo usar AppDomain.CurrentDomain.BaseDirectory o System.Environment.CurrentDirectory?
- 18. ¿Debo usar Module :: Install o Module :: Build?
- 19. ¿Debo usar ApplyUpdates (0) o ApplyUpdates (-1)?
- 20. Debo usar Python 32bit o Python 64bit
- 21. ¿Debo usar `import os.path` o` import os`?
- 22. ¿Debo usar QCoreApplication :: processEvents() o QApplication :: processEvents()?
- 23. ¿Debo usar WCF o conectores crudos?
- 24. ¿Debo usar window.load o document.ready jQuery
- 25. ¿Debo usar window.onload o script block?
- 26. android view o surfaceView, ¿qué debo usar?
- 27. Numpy: ¿Debo usar newaxis o None?
- 28. ¿Debo usar Drupal 6 o Drupal 7?
- 29. Debo usar Sleep() o simplemente negarlos
- 30. enum o define, ¿cuál debo usar?
No, el hecho de que todos estos módulos proporcionan la constante me dice que hay alguna razón para ello? –
Es porque no siempre los usa todos, y no desea instalar e importar un módulo solo para obtener Pi. –
@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 ... –