اذهب إلى المحتوى
  • 0

اي الفرق بين الداله range و numpy.arange ؟

Ail Ahmed

السؤال

Recommended Posts

  • 0

وعليكم السلام ورحمة الله وبركاته .

ان دالة range هى دالة built-in function فى بايثون اما دالة arange فهى دالة خاصة بمكتبة numpy ولكن فى المجمل فان الدالتين متشابهتين فى الاستخدام و فى نفس كل شئ تقريبا . ولكن توجد بعض الفروق الجوهرية بينهما, ولكن اولا لنشرح ما وظيفتهما :

دالة range تقوم بارجاع كائن من نوع مجال (range) يحتوي على أعداد صحيحة من نقطة البداية إلى نقطة النّهاية مع فصلها بمسافة عدديّة و تستقبل ثلاثة معاملات :

  1.  start  وهو النقطة التى نريد ان يبدا المجال منها.
  2. stop وهو النقطة التى نريد ان ينتهى المجال عندها .
  3. step وهو المسافة بين كل نقطة فى المجال وهو معامل اختيارى اذا لم يتم توفيره سيكون ب 1.

مثال للدالة range 

list(range(3)) # من صفر إلى ثلاثة
#[0, 1, 2]
list(range(1, 5)) # من 1 إلى 5
#[1, 2, 3, 4]
#list(range(1, 5, 2)) # من 1 إلى 5 مع اثنين كمسافة بين كلّ عنصر والآخر
[1, 3]

ويمكنك الذهاب لهذا الرابط لموسوعة حسوب لتفهم اكثر عمل الدالة.

الان الدالة arange هى خاصة بمكتبة numpy وتقوم باعادة كائن من نوع مصفوفة (NumPy array) وهى تستقبل اربع معاملات اول ثلاق معاملات هم نفس الدالة range والمعامل الاخير هو نوع الكائن الذى تريد ان تقوم الدالة arange باعادته لك.

الان ناتى للفروق الجوهرية :

  1. كما وضحت سابقا فان كل دالة تقوم بارجاع كائن مختلف عن الاخر فالدالة range تقوم بارجاع كائن مجال اما arange تقوم بارجاع كائن من نوع مصفوفة او كما تريد انت عن طريق تمرير المعامل الرابع كما تحب.
  2. ان دالة range لها قيد حيث لا يمكن ان تكون المسافة قيمة عشرية بل يجب ان تكون قيمة صحيحة عكس arange يمكن ان تمرر لها ما تريد
    import numpy as np
    
    print(np.arange(1,5,0.5))
    print(list(range(1,5,0.5))) # هنا سوف يحدث مشكلة لان المسافة يجب ان تكون رقم صحيح
  3. السرعة هنا دالة arange أسرع من دالة range فى التنفيذ والعمليات التى تتم عليها .
  4. المساحة التى يتم استخدامها فى الذاكرة فى arange اقل من دالة range .

ولكن يوجد بعض النصائح فاذا كنت تريد انشاء مجال يحوى على العديد من الارقام فان دالة range هى الافضل واذا اردت ان تقوم بالتكرار عليهم فقط فان الدالة range افضل كذلك من arrange . اما اذا كنت تريد تنفيذ عمليات عليهم فان numpy.arange تضمن لك السرعه فى ذلك الامر

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

  • 0

الفرق الاساسي  ان range ترجع كائن من نوع range لا يمكنك ان تقوم بعمليات المصفوفات العديدة  هي مناسبة بشكل كبير لحلقات التكرار 
في الصور التالية تبين الفرق بين الاثنين  حيث  np.arange ترجع array   تستطيع التعامل معها مع جميع العمليات التي تقبلها المصفوفة وفي الصور الثانية تبين عدم قدرة range على اجراء عميلة sum   بينما np.arange كانت قادرة على ذلك

Screenshot 2024-04-25 135328.png

Screenshot 2024-04-25 140200.png

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...