• 0

ما الفرق بين maximum و max و amax في مكتبة Numpy؟

تحتوي مكتبة numpy على ثلاث دوال مختلفة يبدو أنها يمكن استخدامها لنفس الأشياء - باستثناء أنه لا يمكن استخدام numpy.maximum إلا من حيث العناصر ، بينما يمكن استخدام numpy.max و numpy.amax على محاور معينة (صفوف أو أعمدة) أو جميع العناصر . لماذا يوجد أكثر من دالة غير numpy.max؟ هل هناك إختلاف في النتيجة أو الأداء؟

ونفس الشيء لدوال مشابهة، مثل min و amin و minimum

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


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

np.max هو فقط اسم مختصر أو مستعار لـ np.amax . نمرر لهذا التابع المصفوفة التي نريدها ويرد لنا القيمة العظمى فيها. أو يمكننا أن نحدد المحور الذي نريد حساب القيمة العظمى على أساسه  وسيجد لنا القيمة العظمى على طول محور مصفوفة الإدخال (يرد مصفوفة جديدة بالقيم العظمى على طول الأسطر أو الأعمدة). ليتضح الأمر أكثر انظر:

import numpy as np
a = np.array([[3, 22, 5],
              [12, 3, 0],
              [6, 8, 9]])
np.max(a)
#22
np.max(a, axis=0) # سيجد لنا القيمة العظمى في كل عمود
#array([12, 22,  9])
np.max(a, axis=1) # هنا في كل سطر
#array([22, 12,  9])

السلوك الافتراضي لـ np.maximum هو أخذ مصفوفتين وحساب القيمة العظمى من المصفوفتين بشكل element-wise أي يقارن أول قيمة من المصفوفة الأولى بأول قيمة من الثانية والأكبر يضعه في المصفوفة الجديدة. هنا ، تعني كلمة "متوافق" أنه يمكن بث مصفوفة إلى الأخرى. فمثلا:

a1 = np.array([8, 9, 1])
a2 = np.array([4, 10, 2])
np.maximum(a1, a2)
array([8, 10, 2])

لكن np.maximum هي أيضاً وظيفة عامة مما يعني أن لها ميزات وطرق أخرى مفيدة عند العمل مع المصفوفات متعددة الأبعاد. على سبيل المثال ، يمكنك حساب القيمة العظمى التراكمية على مصفوفة (أو محور معين من المصفوفة) وهذا غير ممكن في np.max:

a = np.array([3, 4, -1, 5, 8])
np.maximum.accumulate(a)
#array([3, 4, 4, 5, 8])

كما ويمكنك جعلها تعمل مثل np.maax بالشكل التالي، حيث نستدعي np.maximum.reduce:

import numpy as np
a = np.array([[3, 22, 5],
              [12, 3, 0],
              [6, 8, 9]])
np.maximum.reduce(a,axis=None)
#22
np.maximum.reduce(a,axis=0)
#array([12, 22,  9])

ومن حيث الأداء فلا فرق ف np.max تستخدم ضمنياً np.maximum.reduce لحساب القيم العظمى، أي كلاهما متشابهان. أما الاختلاف فهو كما ذكرنا في الأعلى "حساب القيمة العظمى من المصفوفتين بشكل element-wise ". أما بالنسبة إلى np.amax و np.max فكلاهما يستدعي نفس التابع. np.max هو مجرد اسم مستعار لـ np.amax، ويحسبان القيمة العظمى لجميع العناصر في المصفوفة ، أو على طول محور المصفوفة المحدد.

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

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


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

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

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

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


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

تسجيل الدخول

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


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