Dois-je utiliser scipy.pi, numpy.pi ou math.pi?


138

Dans un projet utilisant SciPy et NumPy, dois - je utiliser scipy.pi, numpy.piou math.pi?


6
Non, le fait que tous ces modules fournissent la constante me dit qu'il y a une raison à cela?
Douglas B.Staple

3
C'est parce que vous ne les utilisez pas toujours tous et que vous ne voudriez pas installer et importer un module juste pour obtenir Pi.
Lev Levitsky

11
@LevLevitsky Je viens de commencer à utiliser python et j'ai remarqué qu'il y avait une différence entre math.exp et numpy.exp (numpy.exp peut prendre une liste mais math.exp veut un float). Donc je ne pensais pas que c'était une question stupide ...
Douglas B.Staple

Réponses:


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

Donc peu importe, ils ont tous la même valeur.

La seule raison pour laquelle les trois modules fournissent une pivaleur est que si vous n'utilisez qu'un seul des trois modules, vous pouvez facilement accéder à pi sans avoir à importer un autre module. Ils ne fournissent pas des valeurs différentes pour pi.


15
Toutes choses étant égales par ailleurs, j'utiliserais math.pisimplement parce qu'il est dans la bibliothèque standard si le module ne dépend pas numpyou scipynon - Mais comme vous le dites, utilisez pi dans le module que vous importez au départ car ils tous la même valeur.
mgilson

3
Si vous utilisez déjà numpy, utilisez np.pi, mais cela n'a pas de sens d'importer NumPy uniquement pour le pimoment où il est math.
asmeurer

43

Une chose à noter est que toutes les bibliothèques n'utiliseront pas la même signification pour pi, bien sûr, donc ça ne fait jamais de mal de savoir ce que vous utilisez. Par exemple, la représentation de pi de la bibliothèque mathématique symbolique Sympy n'est pas la même que math et 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

9
sympy Pi n'est pas stocké en tant que constante / float, c'est un objet qui contient la constante
Naib

22
sympy est exactement pi, représenté symboliquement, pour faire des maths symboliques. les autres sont des approximations en virgule flottante pour faire des calculs en virgule flottante.
endolith
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.