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

السؤال

نشر

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

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

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

Recommended Posts

  • 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
نشر (معدل)

أولاً 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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...