Czy powinienem używać scipy.pi, numpy.pi czy math.pi?


137

W projekcie z wykorzystaniem scipy i NumPy, powinno się używać scipy.pi, numpy.pilub math.pi?


6
Nie, fakt, że wszystkie te moduły zapewniają stałą, mówi mi, że jest ku temu jakiś powód?
Douglas B. Staple

3
Dzieje się tak, ponieważ nie zawsze używasz ich wszystkich i nie chcesz instalować i importować modułu tylko po to, aby uzyskać Pi.
Lev Levitsky

11
@LevLevitsky Właśnie zacząłem używać Pythona i zauważyłem, że istnieje różnica między math.exp i numpy.exp (numpy.exp może przyjmować listę, ale math.exp chce float). Więc nie sądziłem, że to głupie pytanie ...
Douglas B. Staple

Odpowiedzi:


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

Więc to nie ma znaczenia, wszystkie mają tę samą wartość.

Jedynym powodem, dla którego wszystkie trzy moduły podają piwartość, jest to, że jeśli używasz tylko jednego z trzech modułów, możesz wygodnie mieć dostęp do pi bez konieczności importowania innego modułu. Nie podają różnych wartości pi.


15
Wszystkie inne rzeczy są równe, użyłbym math.pipo prostu dlatego, że znajduje się w standardowej bibliotece, jeśli moduł nie zależy od numpylub w scipyinny sposób - Ale jak mówisz, użyj pi w dowolnym module, który importujesz na początku, ponieważ są one wszystkie te same wartości.
mgilson

3
Jeśli już używasz numpy użyj np.pi, ale nie ma sensu importować NumPy tylko piwtedy, gdy jest dostępny math.
asmeurer

42

Należy zauważyć, że oczywiście nie wszystkie biblioteki będą używać tego samego znaczenia dla pi, więc nigdy nie zaszkodzi wiedzieć, czego używasz. Na przykład symboliczna biblioteka matematyczna reprezentacja pi przez Sympy nie jest tym samym, co matematyka i 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 nie jest przechowywana jako stała / zmiennoprzecinkowa, jest to obiekt, który zawiera stałą
Naib

22
Sympy to dokładnie pi, reprezentowane symbolicznie, do wykonywania symbolicznej matematyki. inne są przybliżeniami zmiennoprzecinkowymi do wykonywania obliczeń zmiennoprzecinkowych.
endolith
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.