فهرست سرفصل‌های 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 — توزیع داده (Data Distribution)

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

توزیع داده (Data Distribution)

اینجا با مفهوم توزیع داده در نامپای آشنا می شویم. یعنی بفهمیم کدام مقدارها بیشتر تکرار می شوند و چطور این رفتار را با اعداد تصادفی شبیه سازی کنیم.

توزیع داده یعنی چه؟

توزیع داده (Data Distribution) یعنی لیستی از همه مقدارهای ممکن، همراه تعداد تکرار هر مقدار.

مثلا نمره های کلاس را تصور کن؛ می گوییم چند نفر 20 شده اند، چند نفر 19، چند نفر 18 و همین طور تا 10.

چنین لیستی برای آمار و علم داده خیلی مهم است؛ چون به ما می گوید داده بیشتر دور کدام مقدارها جمع شده است.

توزیع تصادفی بر اساس احتمال

توزیع تصادفی (Random Distribution) یعنی مجموعه ای از عددهای تصادفی که از یک الگوی احتمال مشخص پیروی می کنند.

اینجا با چیزی به نام تابع چگالی احتمال (Probability Density Function) سروکار داریم؛ یعنی تابعی که می گوید هر مقدار چه شانسی دارد دیده شود.

در نامپای می توانیم با تابع choice() از ماژول random عددهای تصادفی بسازیم که طبق احتمال های دلخواه رفتار کنند.

این کار کمک می کند شبیه سازی های واقعی تری انجام دهیم؛ مثلا شبیه سازی نمره ها یا نتایج یک بازی.

استفاده از choice با احتمال ها

تابع choice() علاوه بر لیست مقدارها، یک آرایه احتمال هم می گیرد. هر عدد احتمال بین 0 و 1 است.

اگر احتمال یک مقدار 0 باشد، آن مقدار هرگز انتخاب نمی شود. اگر 1 باشد، همیشه همان مقدار انتخاب می شود.

مثال: توزیع داده یک بعدی

در این مثال یک آرایه 1 بعدی با 100 مقدار می سازیم. هر مقدار باید 3، 5، 7 یا 9 باشد؛ اما با احتمال های متفاوت.

from numpy import random

x = random.choice([3, 5, 7, 9], p=[0.1, 0.3, 0.6, 0.0], size=(100))

print(x)

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

در این توزیع، مقدار 7 بیشترین احتمال را دارد؛ پس معمولا بیشتر دیده می شود. مقدار 9 احتمال 0 دارد؛ یعنی هرچقدر هم برنامه را اجرا کنیم، در خروجی دیده نمی شود.

نکته: مجموع همه احتمال ها باید دقیقا 1 باشد؛ وگرنه توزیع معتبر نیست.

توزیع داده در آرایه های چندبعدی

تابع choice() می تواند آرایه هایی با شکل های مختلف بسازد. کافی است پارامتر size را به شکل دلخواه بدهیم.

مثال: توزیع داده دوبعدی

اینجا همان احتمال ها را نگه می داریم؛ اما آرایه دوبعدی سه ردیفی با پنج ستون می سازیم.

from numpy import random

x = random.choice([3, 5, 7, 9], p=[0.1, 0.3, 0.6, 0.0], size=(3, 5))

print(x)

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

باز هم بیشتر مقدارها 7 خواهند بود؛ چون احتمال 7 از بقیه بزرگ تر است. با این روش می توانی جدول نمره، ماتریس بازی یا داده آزمایشی بسازی.

اگر می خواهی درباره خود عددهای تصادفی بیشتر بدانی، صفحه مقدمه تصادفی سازی نامپای برایت مناسب است.

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

برای تمرین توزیع داده در نامپای این سه کار را انجام بده:

  1. یک آرایه 20 تایی بساز که بیشتر مقدارها 7 باشند.
  2. یک آرایه دوبعدی 4×5 بساز و احتمال 5 را بیشتر کن.
  3. تعداد هر مقدار را با numpy.unique و پارامتر return_counts بشمار.

جمع بندی سریع

  • توزیع داده یعنی بدانیم هر مقدار چند بار تکرار می شود.
  • در نامپای می توانیم توزیع های تصادفی بسازیم که شبیه دنیای واقعی باشند.
  • تابع choice() با آرایه احتمال، توزیع های مختلف می سازد.
  • مجموع احتمال ها باید همیشه 1 باشد.
  • با تغییر size می توانیم توزیع داده را روی آرایه های چندبعدی اعمال کنیم.