• 0

هل يجب أن أستخدم scipy.pi أو numpy.pi أو math.pi؟

في مشروع يستخدم SciPy و NumPy، هل يجب أن أستخدم scipy.pi أو numpy.pi أو math.pi؟

هل يوجد فرق في قيم pi هنا، وهل توفر أي مكتبة قيمة أدق عن الأخرى؟ وإن كانت جميع القيم متساوية في المكتبات الثلاثة، إذًا لماذا قيمة pi موجودة في كل هذه المكتبات؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

في الواقع لا يوجد فرق بين قيم pi في اي من المكتبات الثلاث، للتاكد جرب الكود التالي:

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

هنا نحن نقارن بين قيم pi في الثلاث مكتبات والناتج هو true اي انهم جميعهم متساوون.

السبب الوحيد لتوفير نفس قيمه pi في الثلاث مكتبات هي تسهيل استدعائها بغض النظر عن المكتبة التي تقوم باستدعاءها والعمل بها، نظرا لاهمية قيمه ال pi وكثرة استخدامها.

تمّ تعديل بواسطة Ahmed Sharshar
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1
import math
import numpy
import scipy
# من ناحية نمط البيانات
type(numpy.pi)==type(math.pi)==type(scipy.pi) # True
# القيمة
math.pi == np.pi == scipy.pi  # True  3.141592653589793
#  نجد اختلاف بسيط من ناحية الأداء
%timeit scipy.pi*1000
"""
The slowest run took 36.02 times longer than the fastest. This could mean that an intermediate result is being cached.
10000000 loops, best of 5: 102 ns per loop
"""
%timeit numpy.pi*1000
"""
The slowest run took 27.30 times longer than the fastest. This could mean that an intermediate result is being cached.
10000000 loops, best of 5: 107 ns per loop
"""
%timeit math.pi*1000
"""
The slowest run took 23.38 times longer than the fastest. This could mean that an intermediate result is being cached.
10000000 loops, best of 5: 94.2 ns per loop
"""

ووجودها في 3 مكتبات يسهل عليك العمل، فمثلاً اعتبر أنها غير موجودة في نمباي وأنت الآن تتعامل مع مصفوفات نمباي وتريد استخدام هذه القيمة، وبالتالي ستكون مجبراً على استيرادها من الوحدة math  أو scipy. لذا فإن وجودها في نفس المكتبة التي تعمل بها يريحك من عملية استيرادها عند الحاجة.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
>>> import math
>>> import numpy as np
>>> import scipy
>>> math.pi == np.pi == scipy.pi
True

بإمكانك تجربة الكود المرفق, قيمة pi في المكتبات الثلاثة هي نفسها, لذلك يمكنك استخدام اي منها و ستحصل على نفس النتيجة.

pi موجودة في المكتبات الثلات لأنك اذا اردت استخدام احدى هذه المكتبات, ستجد قيمة pi متوفرة في هذه المكتبة مباشرة و لن تحتاج لاستدعاء مكتبة اخرى من اجل الحصول عليها.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن