ฉันควรใช้ scipy.pi, numpy.pi หรือ math.pi?


139

ในโครงการใช้ SciPy NumPy และผมควรใช้scipy.pi, numpy.piหรือmath.pi?


6
ไม่ความจริงที่ว่าโมดูลทั้งหมดนี้มีค่าคงที่บอกฉันว่ามีเหตุผลบางอย่างสำหรับสิ่งนั้น
Douglas B.Staple

3
เป็นเพราะคุณไม่ได้ใช้ทั้งหมดเสมอไปและคุณไม่ต้องการติดตั้งและนำเข้าโมดูลเพื่อรับ Pi
Lev Levitsky

11
@LevLevitsky ฉันเพิ่งเริ่มใช้ python และสังเกตเห็นว่ามีความแตกต่างระหว่าง math.exp และ numpy.exp (numpy.exp สามารถรับรายการได้ แต่ math.exp ต้องการ float) ดังนั้นฉันไม่คิดว่ามันเป็นคำถามโง่ ๆ ...
Douglas B.Staple

คำตอบ:


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

มันไม่สำคัญหรอกว่ามันมีค่าเท่ากันหมด

เหตุผลเดียวที่โมดูลทั้งสามให้piค่าคือหากคุณใช้เพียงหนึ่งในสามโมดูลคุณสามารถเข้าถึง pi ได้อย่างสะดวกโดยไม่ต้องนำเข้าโมดูลอื่น พวกเขาไม่ได้ให้ค่า pi ที่แตกต่างกัน


15
สิ่งอื่น ๆ ทั้งหมดเท่ากันฉันจะใช้math.piเพียงเพราะมันอยู่ในไลบรารีมาตรฐานหากโมดูลไม่ได้ขึ้นอยู่กับnumpyหรือscipyอย่างอื่น - แต่อย่างที่คุณบอกใช้ pi ในโมดูลใดก็ตามที่คุณนำเข้าเพื่อเริ่มต้นด้วยเพราะมัน ค่าเดียวกันทั้งหมด
mgilson

4
หากคุณใช้ numpy use อยู่np.piแล้ว แต่มันไม่สมเหตุสมผลที่จะนำเข้า NumPy piเมื่ออยู่ในmathนั้น
asmeurer

45

สิ่งหนึ่งที่ควรทราบก็คือไม่ใช่ทุกไลบรารีที่จะใช้ความหมายเดียวกันกับ pi แน่นอนดังนั้นจึงไม่ต้องกังวลว่าคุณกำลังใช้อะไร ตัวอย่างเช่นไลบรารีคณิตศาสตร์เชิงสัญลักษณ์การแทนค่า pi ของ Sympy ไม่เหมือนกับคณิตศาสตร์และตัวเลข:

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 ไม่ได้ถูกจัดเก็บเป็นค่าคงที่ / ลอยเป็นวัตถุที่มีค่าคงที่
Naib

22
sympy's คือ pi ซึ่งแสดงในเชิงสัญลักษณ์สำหรับการทำคณิตศาสตร์เชิงสัญลักษณ์ อื่น ๆ คือการประมาณจุดลอยตัวสำหรับการคำนวณจุดลอยตัว
endolith
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.