فهرست سرفصل‌های NumPy
خانه (HOME) مقدمه (Intro) شروع کار (Getting Started) ساخت آرایه ها (Creating Arrays) ایندکس گذاری آرایه (Array Indexing) برش آرایه (Array Slicing) انواع داده (Data Types) کپی در برابر View (Copy vs View) شکل آرایه (Array Shape) تغییر شکل آرایه (Array Reshape) حلقه روی آرایه (Array Iterating) ترکیب آرایه ها (Array Join) تقسیم آرایه ها (Array Split) جستجو در آرایه (Array Search) مرتب سازی آرایه (Array Sort) فیلتر کردن آرایه (Array Filter) مقدمه تصادفی سازی (Random Intro) توزیع داده (Data Distribution) جابه جایی تصادفی (Random Permutation) ماژول Seaborn (Seaborn Module) توزیع نرمال (Normal Distribution) توزیع دوجمله ای (Binomial Distribution) توزیع پواسون (Poisson Distribution) توزیع یکنواخت (Uniform Distribution) توزیع لجستیک (Logistic Distribution) توزیع چندجمله ای (Multinomial Distribution) توزیع نمایی (Exponential Distribution) توزیع کای دو (Chi Square Distribution) توزیع ریلی (Rayleigh Distribution) توزیع پارتو (Pareto Distribution) توزیع زیف (Zipf Distribution) مقدمه ufunc (ufunc Intro) ساخت تابع ufunc (ufunc Create Function) حساب ساده با ufunc (ufunc Simple Arithmetic) گرد کردن اعشار با ufunc (ufunc Rounding Decimals) لگاریتم ها با ufunc (ufunc Logs) جمع ها با ufunc (ufunc Summations) حاصل ضرب ها با ufunc (ufunc Products) تفاضل ها با ufunc (ufunc Differences) کمترین مضرب مشترک با ufunc (ufunc Finding LCM) بزرگترین مقسوم علیه مشترک با ufunc (ufunc Finding GCD) توابع مثلثاتی با ufunc (ufunc Trigonometric) توابع هذلولوی با ufunc (ufunc Hyperbolic) عملیات مجموعه ای با ufunc (ufunc Set Operations) ویرایشگر (Editor) آزمون (Quiz) تمارین (Exercises) سرفصل دوره (Syllabus) برنامه مطالعه (Study Plan) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
NumPy

NumPy — توزیع نمایی (Exponential Distribution)

آخرین بروزرسانی: 1404/08/25

توزیع نمایی (Exponential Distribution)

در این صفحه با توزیع نمایی در NumPy آشنا می شوی. توزیع نمایی (Exponential Distribution) مدت زمان تا رخ داد بعدی را توصیف می کند؛ مثل زمان تا خرابی بعدی دستگاه یا تا موفقیت بعدی در یک سیستم.

توزیع نمایی در NumPy چیست؟

توزیع نمایی وقتی استفاده می شود که فاصله زمانی بین رویدادها مهم باشد. رویداد (Event) یعنی اتفاقی که دنبال آن هستیم؛ مثل رسیدن پیام جدید در موبایل یا ورود مشتری بعدی به فروشگاه.

در این توزیع، عددهای کوچک تر شانس بیشتری دارند. یعنی معمولاً رویداد خیلی زود رخ می دهد؛ اما هنوز احتمال زمان های طولانی تر صفر نیست، فقط کمتر است.

در NumPy تابع random.exponential() همین رفتار را شبیه سازی می کند. با آن می توانی آرایه ای از زمان های تصادفی بین رویدادها بسازی.

پارامترهای توزیع نمایی در NumPy

تابع random.exponential() دو پارامتر اصلی دارد:

  • scale: عکس نرخ رخ دادها است؛ پیش فرض 1.0 است.
  • size: شکل آرایه خروجی را مشخص می کند.

در توزیع پواسون (Poisson Distribution) پارامتری به نام lam داریم که نرخ رویدادهاست. اینجا scale تقریباً برابر 1 / lam است؛ یعنی هرچه scale بزرگ تر باشد، به طور متوسط فاصله بین رویدادها بیشتر می شود.

برای مقایسه با توزیع هایی که روی تعداد تمرکز دارند، می توانی بعداً سراغ صفحه توزیع چندجمله ای NumPy هم بروی.

نمونه گیری از توزیع نمایی در NumPy

در مثال منبع، یک نمونه از توزیع نمایی با scale=2 می سازیم. شکل آرایه خروجی هم 2x3 است؛ یعنی دو سطر و سه ستون.

گام ها:

  1. کتابخانه random را از NumPy ایمپورت کن.
  2. با random.exponential() آرایه تصادفی بساز.
  3. آرایه را با print() روی خروجی ببین.
from numpy import random

x = random.exponential(scale=2, size=(2, 3))

print(x)

مشاهده در ادیتور

نکته: اگر scale را بزرگ تر کنی، عددهای خروجی معمولاً بزرگ تر می شوند؛ یعنی فاصله زمانی بین رویدادها بیشتر می شود.

نمایش توزیع نمایی روی نمودار

دیدن شکل توزیع نمایی روی نمودار خیلی کمک می کند. در مثال، با matplotlib و seaborn نمودار چگالی می کشیم.

matplotlib یک کتابخانه رسم نمودار در پایتون است. seaborn هم کتابخانه ای برای نمودارهای زیباتر روی داده ها است.

گام ها:

  1. آرایه ای از داده نمایی با random.exponential بساز.
  2. با sns.displot چگالی داده را رسم کن.
  3. با plt.show() نمودار را نمایش بده.
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

data = random.exponential(size=1000)

sns.displot(data, kind="kde")

plt.show()

مشاهده در ادیتور

نکته: در نمودار نمایی، مقدارهای نزدیک صفر زیادند و هرچه جلوتر می رویم، نمودار آرام پایین می آید.

رابطه توزیع پواسون و توزیع نمایی

طبق متن منبع، توزیع پواسون تعداد رخ دادها در یک بازه زمانی را توصیف می کند. در مقابل، توزیع نمایی زمان بین این رخ دادها را توصیف می کند.

اگر برایت جالب شد که خود تعداد رویدادها در بازه زمانی چگونه مدل می شود، بعداً صفحه توزیع پواسون در NumPy را هم ببین.

جمع بندی سریع توزیع نمایی

اگر خواستی دوباره مرور کنی، این صفحه توزیع نمایی در NumPy برای مرور خیلی خوب است.

  • توزیع نمایی، زمان بین رویدادهای متوالی را مدل می کند.
  • در NumPy با random.exponential() به این توزیع دسترسی داری.
  • پارامتر scale عکس نرخ و میانگین فاصله زمانی است.
  • size فقط شکل آرایه خروجی را تعیین می کند.
  • پواسون روی تعداد رویدادها تمرکز دارد، نمایی روی فاصله بین آن ها.