• 0

كيف تعمل الدالة histogram في numpy وما هي فائدتها؟

أثناء تعلمي عن numpy ، صادفت الدالة numpy.histogram() في المثال التالي:

>>> import numpy as np
>>> np.histogram([1, 2, 3], bins=[0, 1, 2, 3])
(array([0, 1, 2], dtype=int64), array([0, 1, 2, 3]))

أريد أن أعرف ماذا تفعل هذه الدالة وكيف تعمل؟ في التوثيق الخاص بـ Numpy يتم ذكر bins ولم أفهم أيضًا ما هي؟

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

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


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

bin هو مجال يمثل عرض bar (شريط) واحد من الهستوغرام على طول المحور الأفقي X. كما يمكن أن نسميه بالفاصل الزمني. يقوم هذا التابع بحساب عدد مرات ظهور عناصر من مصفوفة الدخل ضمن مجال معين "bar"، ستفهم أكثر من خلال المثال التالي، لكن سأعطيك مثال من خلال دالة تكافئ هذه الدالة لأن هذه الدالة لاتقوم بالرسم:

import matplotlib.pyplot as plt

plt.hist([1, 2, 2], bins=[0, 1, 2, 3])
plt.show()
# bins=[0, 1, 2, 3] تعني أنه سيتم تقسيم المحور الأفقي إلى أريع مجالات تبعاً لهذه القيم
# [1, 2, 2] هي الثائمة التي نريد حساب هستوغرامها
# وبالتالي هذا التابع يحسب لنا عدد مرات ظهور عناصر من بيانات الدخل ضمن مجال معين
# لاحظ أنه ضمن المجال من 0 إلى 1 لايوجد أي عناصر في بيانات الدخل ولهذا لم يظهر لنا البار 
# ضمن المجال من 1 ل 2 يوجد قيمة وحيدة وهي 1
# لاحظ أن 2 لاتحتسب ضمن المجال وإنما الأصغر تماماً من 2
# الآن ضمن المجال من 2 ل 3 يوجد قيمتين في بيانات الدخل وهما 2 و 2 لذا كانت قمة البار تقابل القيمة 2 على المحور الأفقي

1.png.01c35d2c0a2b813bf7f602382769d85f.png
مثال آخر:

plt.hist([0,0,1, 2, 2,5,5,5], bins=[0, 1, 2, 3,4,5])
plt.show()
# لاحظ أنه ضمن المجال من 3 ل4 لاتوجد أي قيمة في بيانات الدخل لذا كان طول البار يساوي 0 ضمن هذا المجال
# كما نلاحظ أن طول البار يساوي 3 ضمن المجال من 4 ل 5 لوجود 3 قيم في بيانات الدخل ضمن هذا المجال
# لاحظ أيضاً أنه بالرغم من أن 5 ليست أصغر تماماً لكنها احتسبت ضمن المجال وهذه حالة خاصة لأنها آخر مجال

index.png.0afeca0a6bd44374f664c26749035a0b.png
لاحظ هنا عند إضافة مجال آخر ستحتسب القيمة 5 ضمن المجال الجديد:

# هنا سنعبث بالمجالات
plt.hist([0,0,1, 2, 2,5,5,5], bins=[0, 1, 2,2.5,5,6])
plt.show()
# أو مجال من 0 ل1 والثاني من 1 ل2والثالث من 2 ل 2.5 ويوجد ضمنه قيمتين وهكذا

4.png.e4521f70b4c42d5c0baf76054a01505b.png
دالة np.histogram تعمل بشكل مكافئ تماماً، لكنها لاتقوم بالرسم.

# أمثلة
np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
#(array([0, 2, 1]), array([0, 1, 2, 3]))
np.histogram(np.arange(4), bins=np.arange(5), density=True)
#(array([0.25, 0.25, 0.25, 0.25]), array([0, 1, 2, 3, 4]))
np.histogram([[1, 2, 1], [1, 0, 1]], bins=[0,1,2,3])
#(array([1, 4, 1]), array([0, 1, 2, 3]))

ونستخدمها في الأمور الإحصائية أو في مهام معالجة الصور حيث أن حساب هستوغرام صورة يخبرنا بالعديد من المعلومات عن الصورة.

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

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


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

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

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

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


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

تسجيل الدخول

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


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