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

السؤال

نشر

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

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

Recommended Posts

  • 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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...