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

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

Amer Abdallah

السؤال

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

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

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

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

Recommended Posts

  • 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
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 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
...

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...