• 0

ما الفرق بين دالة mean و average في مكتبة Numpy؟

لاحظت أن كلا الدالتين يقوم بإرجاع نفس القيمة بدون أي إختلاف:

>>> import numpy as np
>>> np.mean([1, 2, 3])
2.0
>>> np.average([1, 2, 3])
2.0
>>>

ومع ذلك، أعتقد أنه يجب أن تكون هناك بعض الاختلافات، لأنهما في النهاية دالتين مختلفتين. ما هو الفرق بينهما؟

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

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


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

أولاً np.mean يحسب دائماً متوسطاً حسابياً، ولديه بعض الخيارات الإضافية للإدخال والإخراج (على سبيل المثال ، أنواع البيانات التي يجب استخدامها ، ومكان وضع النتيجة.

numpy.mean(a, axis=None, dtype=None, out=None)

أمثلة:

a = np.array([[1, 2], [3, 4]])
np.mean(a)
#2.5
np.mean(a, axis=0)
#array([2., 3.])
np.mean(a, axis=1)
#array([1.5, 3.5])

حيث أن الوسيط الأول هو المصفوفة، والثاني هي المحاور أو المحور الذي سيتم حساب المتوسط عليه.و الافتراضي none يعني حساب متوسط المصفوفة المسطحة أي كامل المصفوفة. أما الوسيط الثالث فهو النمط المستخدم في حساب المتوسط. بالنسبة لمدخلات الأعداد الصحيحة ، الافتراضي هو ؛ float64 ولمدخلات الفاصلة العائمة، وهو نفس نوع الإدخال dtype. أما الوسيط التالي فهو مصفوفة إخراج بديلة لوضع النتيجة فيها.
ثانياً np.average يمكن حساب المتوسط الموزون إذا قمنا بتزويده بأوزان المعلمات.

numpy.average(a, axis=None, weights=None)

أول وثاني وسيط كما في التابع السابق لكن الوسيط الثالث هو مصفوفة الأوزان المرتبطة بالقيم الموجودة في المصفوفة. كل قيمة في a تساهم في المتوسط وفقاً للوزن المرتبط بها. يمكن أن تكون مصفوفة الأوزان إما 1-D (وفي هذه الحالة يجب أن يكون طولها بحجم a على طول المحور المحدد) أو من نفس الشكل مثل a. إذا كانت الأوزان = None، فسيتم افتراض أن جميع البيانات الموجودة في a لها نفس الوزن. أمثلة:

data = np.arange(1, 5)
np.average(data)
#2.5
np.average(np.arange(1, 11), weights=np.arange(10, 0, -1))
#4.0
data = np.arange(6).reshape((3,2))
"""
array([[0, 1],
       [2, 3],
       [4, 5]])
"""
np.average(data, axis=1, weights=[1./4, 3./4])
#array([0.75, 2.75, 4.75])
np.average(data, weights=[1./4, 3./4]) # TypeError: Axis must be specified when shapes of a and weights differ.

 

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

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


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

يأخذ np.average مُدخل وزن اختياري. إذا لم يتم توفيره فهما متكافئان. ألقِ نظرة على الكود Mean, Average:

np.mean:

try:
    mean = a.mean
except AttributeError:
    return _wrapit(a, 'mean', axis, dtype, out)
return mean(axis, dtype, out)

np.average:

...
if weights is None :
    avg = a.mean(axis)
    scl = avg.dtype.type(a.size/avg.size)
else:
    # كود الوزن هنا

if returned: #returned هو معامل اختياري آخر
    scl = np.multiply(avg, 0) + scl
    return avg, scl
else:
    return avg
...

 

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

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


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

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

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

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


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

تسجيل الدخول

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


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