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

السؤال

نشر

أثناء تعلمي عن 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 ولم أفهم أيضًا ما هي؟

Recommended Posts

  • 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]))

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...