2012-09-28 2 views
89

SciPy 및 NumPy를 사용하는 프로젝트에서 scipy.pi, numpy.pi 또는 math.pi을 사용해야합니까?scipy.pi, numpy.pi 또는 math.pi를 사용해야합니까?

+4

아니, 모든 모듈은 상수를 제공한다는 사실은 내가 그 몇 가지 이유가 있음을 알려줍니다 : 예를 들어, 파이의 상징적 수학 라이브러리 Sympy의 표현은 수학 및 NumPy와 동일하지 않습니다? –

+3

항상 Pi를 사용하기 때문에 모듈을 모두 설치하고 가져 오는 것을 원하지 않기 때문입니다. –

+7

@LevLevitsky 방금 파이썬을 사용하기 시작했고 math.exp와 numpy.exp (numpy.exp는 목록을 가져올 수 있지만 math.exp는 float을 원함)의 차이점을 발견했습니다. 그래서 나는 그것이 바보 같은 질문이라고 생각하지 않았다 ... –

답변

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

그래서 모두 중요하지 않습니다. 모두 같은 값입니다.

3 개의 모듈 모두에서 pi 값을 제공하는 유일한 이유는 3 개의 모듈 중 하나만 사용하는 경우 다른 모듈을 가져올 필요없이 편리하게 pi에 액세스 할 수 있습니다. 그들은 pi에 대해 다른 값을 제공하지 않습니다.

+13

다른 모든 것들이 동일하다면 모듈이'numpy' 나'scipy'에 의존하지 않는다면 표준 라이브러리에 있기 때문에'math.pi'를 사용합니다 - 그렇지 않으면 파이를 사용하십시오 모듈은 모두 동일한 값이므로 시작하기 위해 가져 오는 모듈입니다. – mgilson

+1

이미 numpy를 사용하고 있다면'np.pi'를 사용하십시오. 그러나 NumPy가'수학 '에있을 때'pi'를 가져 오는 것은 의미가 없습니다. – asmeurer

32

한 가지주의해야 할 점은 모두 라이브러리는 pi에 대해 동일한 의미를 사용하므로 사용하는 것을 아는 것이 결코 아프지 않습니다.

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는 상수/부동 소수점으로 저장되지 않습니다. 상수가 포함 된 객체입니다. – Naib

+8

sympy는 심볼릭 연산을 위해 상징적으로 표현 된 pi입니다. 나머지는 부동 소수점 연산을 수행하는 부동 소수점 근사치입니다. – endolith