فهرست سرفصل‌های 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 — جابه جایی تصادفی (Random Permutation)

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

جابه جایی تصادفی (Random Permutation)

در این صفحه با جابه جایی تصادفی در نامپای آشنا می شویم. می بینی چطور می شود ترتیب عنصرهای یک آرایه را به صورت تصادفی عوض کرد؛ هم روی خود آرایه، هم با ساختن یک آرایه جدید.

آشنایی با جابه جایی تصادفی در نامپای

جابه جایی یا Permutation یعنی تغییر ترتیب عنصرها. مثلا آرایه [1, 2, 3] را به [3, 2, 1] تبدیل کنیم.

در ماژول random نامپای دو ابزار مهم داریم: تابع shuffle() و تابع permutation().

shuffle روی خود آرایه کار می کند و آن را درجا تغییر می دهد. اما permutation یک آرایه جدید با ترتیب جابه جاشده برمی گرداند.

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

شافل کردن آرایه با shuffle

shuffle یعنی آرایه را به صورت تصادفی درهم بریزیم؛ آن هم روی خود آرایه.

به این نوع تغییر می گوییم in-place؛ یعنی آرایه اصلی عوض می شود و کپی تازه ای برنمی گردد.

مثال: جابه جایی تصادفی با shuffle

در این مثال، ترتیب عددهای 1 تا 5 به صورت تصادفی عوض می شود.

from numpy import random
import numpy as np

arr = np.array([1, 2, 3, 4, 5])

random.shuffle(arr)

print(arr)

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

هر بار این کد را اجرا کنی، خروجی می تواند ترتیب متفاوتی داشته باشد. اما خود آرایه arr عوض شده است و ترتیب قبلی را از دست داده است.

نکته: اگر به آرایه اصلی نیاز داری، قبل از استفاده از shuffle از آن یک کپی بگیر.

تولید آرایه جدید با permutation

permutation هم جابه جایی تصادفی انجام می دهد؛ اما آرایه جدید می سازد و آرایه اصلی را دست نخورده می گذارد.

این روش زمانی خوب است که بخواهی ترتیب های مختلف را تست کنی؛ بدون اینکه داده اولیه خراب شود.

مثال: ساخت آرایه با ترتیب جابه جاشده

در این مثال، یک جابه جایی تصادفی از همان آرایه می گیریم؛ اما نتیجه در خروجی چاپ می شود و خود arr همان قبلی می ماند.

from numpy import random
import numpy as np

arr = np.array([1, 2, 3, 4, 5])

result = random.permutation(arr)

print(result)

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

اینجا result ترتیب جدید را دارد؛ اما arr همان آرایه اولیه است. بنابراین می توانی چندین بار تابع را صدا بزنی و ترتیب های مختلف بگیری.

برای پروژه های بزرگ تر، مثلا شافل کردن سوال های یک آزمون، معمولا جابه جایی تصادفی در نامپای با permutation انتخاب امن تری است.

تمرین برای جابه جایی تصادفی

برای تمرین جابه جایی تصادفی در نامپای این سه مرحله را انجام بده:

  1. یک آرایه از شماره صندلی های کلاس بساز؛ مثلا 1 تا 20.
  2. با shuffle() ترتیب صندلی ها را عوض کن و خروجی را ببین.
  3. همان آرایه را با permutation() جابه جا کن و تفاوت تغییر درجا و آرایه جدید را مقایسه کن.

جمع بندی سریع

  • جابه جایی تصادفی یعنی تغییر ترتیب عنصرهای آرایه.
  • تابع shuffle() آرایه را درجا عوض می کند.
  • تابع permutation() یک آرایه جدید برمی گرداند.
  • برای حفظ داده اصلی، از permutation کمک بگیر.
  • برای شبیه سازی کامل تر، موضوع توزیع داده در نامپای را هم ببین.