2012-09-28 2082 views
89

在使用SciPy和NumPy的項目中,我應該使用scipy.pi,numpy.pi還是math.pi我應該使用scipy.pi,numpy.pi還是math.pi?

+4

沒有,所有這些模塊提供恆定的事實告訴我,有一些原因是什麼? –

+3

這是因爲你並不總是全部使用它們,你不想爲了得到Pi而安裝和導入模塊。 –

+7

@LevLevitsky我剛開始使用python,我注意到math.exp和numpy.exp有區別(numpy.exp可以採用列表,但math.exp需要浮點)。所以我不認爲這是一個愚蠢的問題... –

回答

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

所以沒關係,它們都是一樣的價值。

所有三個模塊提供pi值的唯一原因是如果您僅使用三個模塊中的一個,則可以方便地訪問pi而無需導入其他模塊。他們沒有爲pi提供不同的值。

+13

所有其他的事情是相同的,我會使用'math.pi'只是因爲它是在標準庫中,如果模塊不依賴於'numpy'或'scipy',否則 - 但正如你所說,使用pi中的任何一個因爲它們都具有相同的價值,所以您要先導入模塊。 – mgilson

+1

如果您已經在使用numpy,可以使用'np.pi',但是在'math'中導入NumPy僅僅用於'pi'是沒有意義的。 – asmeurer

32

有一點需要注意的是,不是所有的圖書館將使用相同的意義爲pi,當然,所以它永遠不會傷害知道你在用什麼。例如,圓周率的符號數學庫Sympy的表現是不一樣的數學和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

爲什麼'SymPy'應該具有不同的值?!... – Roboticist

+8

sympy Pi不是作爲常量/浮點數存儲的,它是一個包含常量的對象 – Naib

+8

sympy's正好是pi,代表象徵性地表示符號數學。其他的是浮點數的近似值。 – endolith

相關問題