فهرست سرفصل‌های 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 Summations)

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

جمع ها با ufunc (ufunc Summations)

در این صفحه می بینی جمع ها با ufunc در NumPy چه فرقی با جمع ساده دارند. یعنی فرق بین این که دو آرایه را عضو به عضو جمع کنیم، یا جمع را روی چند آرایه و چند عنصر انجام بدهیم.

تفاوت جمع ساده و جمع ها با ufunc

در منبع گفته شده جمع ساده بین دو آرگومان انجام می شود. اما جمع ها با ufunc روی چند عنصر یا چند آرایه انجام می شوند.

در مثال اول منبع، از تابع np.add برای جمع عضو به عضو دو آرایه استفاده شده است. این همان addition است.

import numpy as np

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

newarr = np.add(arr1, arr2)

print(newarr)

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

طبق متن منبع، خروجی این مثال [2 4 6] است؛ یعنی 1+1، 2+2، 3+3.

در مثال بعد، منبع از np.sum استفاده کرده است. این جا جمع روی همه عناصر دو آرایه انجام می شود؛ این همان summation است.

import numpy as np

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

newarr = np.sum([arr1, arr2])

print(newarr)

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

در متن منبع توضیح داده شده که خروجی این مثال 12 است. یعنی همه عددها با هم جمع شده اند.

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

برای تمرین ساده روی همین مثال ها، این سه گام را انجام بده:

  1. آرایه های نمونه را مثل منبع در کد خودت بساز.
  2. یک بار با np.add جمع عضو به عضو را اجرا کن.
  3. بار بعد، با np.sum جمع کلی را اجرا کن و خروجی ها را مقایسه کن.

جمع روی محور با پارامتر axis

در بخش Summation Over an Axis منبع، پارامتر axis معرفی شده است. طبق متن، اگر axis=1 بدهیم، NumPy جمع را روی هر آرایه جداگانه انجام می دهد.

در مثال منبع، دوباره از دو آرایه مثل قبل استفاده شده است، اما این بار axis=1 تنظیم شده است.

import numpy as np

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

newarr = np.sum([arr1, arr2], axis=1)

print(newarr)

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

در متن منبع گفته شده خروجی این مثال [6 6] است. یعنی جمع عناصر آرایه اول 6 شده و جمع عناصر آرایه دوم هم 6 شده است.

نکته: همین مثال برای درک جمع ها با ufunc روی محورها کافی است؛ منبع فقط همین حالت را نشان داده است.

جمع تجمعی با cumsum

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

در متن منبع یک مثال کلی آمده است: برای آرایه [1, 2, 3, 4] جمع تجمعی برابر [1, 3, 6, 10] می شود.

در مثال اصلی، آرایه [1, 2, 3] استفاده شده است و از تابع np.cumsum برای گرفتن جمع تجمعی کمک گرفته شده است.

import numpy as np

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

newarr = np.cumsum(arr)

print(newarr)

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

طبق توضیح منبع، خروجی این مثال [1 3 6] است؛ یعنی 1، بعد 1+2، بعد 1+2+3.

برای حس بهتر نسبت به جمع ها با ufunc، این مراحل را در یک تمرین کوچک انجام بده:

  1. یک آرایه ساده مثل [1, 2, 3, 4] بساز.
  2. یک بار np.sum را روی کل آرایه اجرا کن.
  3. بار دیگر، np.cumsum را صدا بزن و خروجی را با توضیح منبع مقایسه کن.

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

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

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

  • جمع ساده با np.add عضو به عضو دو آرایه را جمع می کند.
  • تابع np.sum جمع ها با ufunc را روی چند عنصر انجام می دهد.
  • با axis=1 جمع هر آرایه جداگانه محاسبه می شود.
  • تابع np.cumsum جمع تجمعی را طبق توضیح منبع برمی گرداند.
  • همه مثال ها در منبع روی آرایه های کوچک عدد صحیح نشان داده شده اند.