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?

Douglas B. Staple
la source
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.

BrenBarn
la source
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
jbay
la source
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