2012-09-28 27 views
89

In un progetto che utilizza SciPy e NumPy, dovrei usare scipy.pi, numpy.pi o math.pi?Devo usare scipy.pi, numpy.pi o math.pi?

+4

No, il fatto che tutti questi moduli forniscono la costante mi dice che c'è qualche ragione per questo? –

+3

È perché non li usi sempre tutti e non vorresti installare e importare un modulo solo per ottenere Pi. –

+7

@LevLevitsky Ho appena iniziato a usare python e ho notato che c'è una differenza tra math.exp e numpy.exp (numpy.exp può fare una lista ma math.exp vuole un float). Quindi non pensavo fosse una domanda stupida ... –

risposta

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

Quindi non importa, hanno tutti lo stesso valore.

L'unico motivo per cui tutti e tre i moduli forniscono un valore pi è quindi se si utilizza solo uno dei tre moduli, è possibile accedere facilmente a Pi senza dover importare un altro modulo. Non stanno fornendo valori diversi per pi.

+13

A parità di altre cose, vorrei usare 'math.pi' semplicemente perché è nella libreria standard se il modulo non dipende da' numpy' o 'scipy' altrimenti - Ma come dici tu, usa pi in qualsiasi modulo che stai importando per cominciare perché hanno tutti lo stesso valore. – mgilson

+1

Se stai già usando numpy usa 'np.pi', ma non ha senso importare NumPy solo per' pi' quando è in 'math'. – asmeurer

32

Una cosa da notare è che non tutte le librerie utilizzeranno lo stesso significato per pi, ovviamente, quindi non fa mai male sapere cosa stai usando. Per esempio, la libreria matematica simbolica rappresentazione di Sympy di pi greco non è la stessa come la matematica e 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 
+2

Perché 'SymPy' dovrebbe avere un valore diverso?! ... – Roboticist

+8

sympy Pi non è memorizzato come costante/mobile, è un oggetto che contiene la costante – Naib

+8

sympy's è esattamente pi, rappresentato simbolicamente, per fare matematica simbolica. gli altri sono approssimazioni in virgola mobile per fare matematica in virgola mobile. – endolith