Soll ich scipy.pi, numpy.pi oder math.pi verwenden?

137

In einem Projekt mit SciPy und NumPy, soll ich verwenden scipy.pi, numpy.pioder math.pi?

Douglas B. Staple
quelle
6
Nein, die Tatsache, dass alle diese Module die Konstante liefern, sagt mir, dass es dafür einen Grund gibt?
Douglas B. Staple
3
Dies liegt daran, dass Sie nicht immer alle verwenden und kein Modul installieren und importieren möchten, nur um Pi zu erhalten.
Lev Levitsky
11
@LevLevitsky Ich habe gerade angefangen, Python zu verwenden, und festgestellt, dass es einen Unterschied zwischen math.exp und numpy.exp gibt (numpy.exp kann eine Liste aufnehmen, math.exp möchte jedoch einen Float). Also dachte ich nicht, dass es eine dumme Frage war ...
Douglas B. Staple

Antworten:

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

Es spielt also keine Rolle, sie haben alle den gleichen Wert.

Der einzige Grund, warum alle drei Module einen piWert bereitstellen , besteht darin, dass Sie, wenn Sie nur eines der drei Module verwenden, bequem auf pi zugreifen können, ohne ein anderes Modul importieren zu müssen. Sie liefern keine unterschiedlichen Werte für pi.

BrenBarn
quelle
15
math.piWenn alle anderen Dinge gleich sind, würde ich sie einfach verwenden, weil sie in der Standardbibliothek enthalten sind, wenn das Modul nicht davon abhängt numpyoder scipynicht - aber wie Sie sagen, verwenden Sie pi in jedem Modul, das Sie importieren, weil sie es sind alle den gleichen Wert.
mgilson
3
Wenn Sie bereits numpy verwenden np.pi, ist es nicht sinnvoll, NumPy nur dann zu importieren, piwenn es aktiviert ist math.
Asmeurer
42

Eine Sache zu beachten ist, dass natürlich nicht alle Bibliotheken die gleiche Bedeutung für pi verwenden, so dass es nie weh tut zu wissen, was Sie verwenden. Zum Beispiel ist die symbolische Mathematikbibliothek Sympys Darstellung von pi nicht dieselbe wie Mathematik und 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
quelle
9
sympy Pi wird nicht als Konstante / float gespeichert, sondern ist ein Objekt, das die Konstante enthält
Naib
22
sympy's ist genau pi, symbolisch dargestellt, um symbolische Mathematik zu betreiben. Die anderen sind Gleitkomma-Näherungen für die Gleitkomma-Mathematik.
Endolith