فهرست سرفصل‌های 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 — عملیات مجموعه ای با ufunc (ufunc Set Operations)

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

عملیات مجموعه ای با ufunc (ufunc Set Operations)

اینجا می خواهیم عملیات مجموعه ای با ufunc در NumPy را ببینیم؛ یعنی کارهایی مثل اجتماع، اشتراک و تفاضل روی آرایه ها، درست مثل مجموعه های ریاضی در کتاب مدرسه.

مجموعه در NumPy یعنی چه؟

در ریاضی، مجموعه یعنی لیستی از عضوهای یکتا؛ یعنی تکراری ها حذف شده اند.

در منبع هم نوشته مجموعه، «collection of unique elements» است؛ یعنی فقط مقدارهای یکتا نگه داشته می شوند.

در NumPy هم برای شروع عملیات مجموعه ای با ufunc باید از آرایه های یک بعدی استفاده کنیم.

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

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

ساخت مجموعه با np.unique در NumPy

در منبع گفته شده برای ساخت مجموعه از روی آرایه، از تابع unique() استفاده می کنیم.

تابع np.unique() تمام مقدارهای تکراری را حذف می کند و فقط یکتاها را برمی گرداند.

البته همان طور که در متن آمده، این آرایه باید یک بعدی باشد تا معنی مجموعه را بدهد.

import numpy as np

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

x = np.unique(arr)

print(x)

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

طبق منبع، این کد آرایه را به یک مجموعه تبدیل می کند و مقدارهای تکراری را کنار می گذارد.

یافتن اجتماع با np.union1d

در متن منبع گفته شده برای پیدا کردن اجتماع دو مجموعه از union1d() استفاده می کنیم.

اجتماع یعنی همه عضوهایی که در مجموعه اول، مجموعه دوم یا هر دو وجود دارند.

خروجی np.union1d() خودش هم یک مجموعه مرتب از مقدارهای یکتا است.

import numpy as np

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

arr2 = np.array([3, 4, 5, 6])

newarr = np.union1d(arr1, arr2)

print(newarr)

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

همان طور که در مثال منبع نشان داده شده، نتیجه شامل 1، 2، 3، 4، 5 و 6 است.

یافتن اشتراک با np.intersect1d

برای پیدا کردن عضوهایی که در هر دو مجموعه مشترک هستند، منبع از intersect1d() استفاده می کند.

اشتراک یعنی فقط مقدارهایی که در هر دو آرایه دیده می شوند.

تابع np.intersect1d() یک آرایه جدید از همین مقدارهای مشترک برمی گرداند.

import numpy as np

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

arr2 = np.array([3, 4, 5, 6])

newarr = np.intersect1d(arr1, arr2, assume_unique=True)

print(newarr)

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

در منبع نوشته شده آرگومان اختیاری assume_unique اگر True باشد، محاسبه را سریع تر می کند.

همچنین تأکید شده هنگام کار با مجموعه ها بهتر است assume_unique=True تنظیم شود.

یافتن تفاضل با np.setdiff1d

در بخش بعدی منبع، تفاضل مجموعه ها را توضیح داده است.

تفاضل یعنی عضوهایی که فقط در مجموعه اول هستند و در مجموعه دوم نیستند.

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

import numpy as np

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

set2 = np.array([3, 4, 5, 6])

newarr = np.setdiff1d(set1, set2, assume_unique=True)

print(newarr)

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

در یادداشت منبع آمده که این تابع هم آرگومان assume_unique دارد و برای مجموعه ها باید روی True بماند.

یافتن تفاضل متقارن با np.setxor1d

در آخر، منبع سراغ «تفاضل متقارن» می رود.

تفاضل متقارن یعنی عضوهایی که فقط در یکی از دو مجموعه ظاهر شده اند، نه هر دو.

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

import numpy as np

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

set2 = np.array([3, 4, 5, 6])

newarr = np.setxor1d(set1, set2, assume_unique=True)

print(newarr)

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

در متن منبع توضیح داده شده که setxor1d() هم آرگومان assume_unique دارد و استفاده از مقدار True کنار مجموعه ها مفید است.

اگر قبل از این فصل، توابع هذلولوی را دیده ای، می توانی دوباره به توابع هذلولوی با ufunc برگردی و مرور کوتاهی انجام بدهی.

تمرین گام به گام با عملیات مجموعه ای با ufunc

برای تمرین چیزهایی که منبع درباره عملیات مجموعه ای با ufunc گفته، این کارها را انجام بده:

  1. یک آرایه با چند مقدار تکراری بساز و با np.unique() آن را به مجموعه تبدیل کن.
  2. دو مجموعه کوچک بساز و اجتماع و اشتراک آن ها را با np.union1d() و np.intersect1d() حساب کن.
  3. برای همان دو مجموعه، تفاضل و تفاضل متقارن را با np.setdiff1d() و np.setxor1d() پیدا کن.

بعد از این تمرین ها، اگر خواستی به مرحله های قبلی برگردی، می توانی کنار توابع مثلثاتی و هذلولوی، کار با مجموعه ها را هم مقایسه کنی.

جمع بندی سریع عملیات مجموعه ای با ufunc

حرف های مهم منبع درباره عملیات مجموعه ای با ufunc در NumPy را این طور خلاصه می کنیم:

  • np.unique() از روی آرایه یک مجموعه می سازد و تکراری ها را حذف می کند.
  • np.union1d() اجتماع دو مجموعه را برمی گرداند؛ یعنی همه عضوهای موجود در هر دو.
  • np.intersect1d() اشتراک را پیدا می کند و عضوهای مشترک را نشان می دهد.
  • np.setdiff1d() عضوهایی را می دهد که فقط در مجموعه اول هستند.
  • np.setxor1d() تفاضل متقارن را حساب می کند؛ یعنی عضوهایی که فقط در یکی از دو مجموعه دیده می شوند.