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

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

حساب ساده با ufunc (ufunc Simple Arithmetic)

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

حساب ساده با ufunc در NumPy یعنی چه؟

در منبع گفته شده می توانی مستقیماً از عملگرهای ریاضی مثل + و - و * و / روی آرایه های NumPy استفاده کنی. اما این بخش نسخه پیشرفته تر را توضیح می دهد که تابع هایی داریم که روی هر چیزی شبیه آرایه، مثل لیست و تاپل، کار می کنند.

در متن منبع همچنین گفته شده این تابع ها می توانند به صورت شرطی هم عمل کنند. یعنی با پارامتر where می گویی روی کدام جای آرایه عملیات انجام شود و روی کدام نشود.

نکته: حساب شرطی یعنی مثلاً بگویی «فقط جاهایی جمع کن که عدد زوج است».

جمع کردن با تابع add

تابع add() مقدارهای دو آرایه را با هم جمع می کند و نتیجه را در یک آرایه جدید برمی گرداند. در مثال منبع، دو آرایه پشت سر هم جمع می شوند.

import numpy as np

arr1 = np.array([10, 11, 12, 13, 14, 15])
arr2 = np.array([20, 21, 22, 23, 24, 25])

newarr = np.add(arr1, arr2)

print(newarr)

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

طبق توضیح منبع، خروجی این مثال [30 32 34 36 38 40] است که حاصل جمع 10+20 و 11+21 و 12+22 و به همین شکل بقیه است.

تفریق با تابع subtract

تابع subtract() عددهای یک آرایه را از آرایه دیگر کم می کند. نتیجه در یک آرایه جدید برگردانده می شود.

import numpy as np

arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([20, 21, 22, 23, 24, 25])

newarr = np.subtract(arr1, arr2)

print(newarr)

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

در منبع گفته شده خروجی این مثال برابر [-10 -1 8 17 26 35] است. یعنی 10−20 و 20−21 و 30−22 و به همین ترتیب.

ضرب با تابع multiply

تابع multiply() عددهای یک آرایه را در عددهای آرایه دیگر ضرب می کند. نتیجه هم در یک آرایه جدید قرار می گیرد.

import numpy as np

arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([20, 21, 22, 23, 24, 25])

newarr = np.multiply(arr1, arr2)

print(newarr)

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

منبع گفته خروجی این مثال [ 200 420 660 920 1200 1500] است. یعنی 10×20 و 20×21 و 30×22 و همین طور تا آخر.

تقسیم با تابع divide

تابع divide() عددهای یک آرایه را بر عددهای آرایه دیگر تقسیم می کند. نتیجه تقسیم ها در یک آرایه جدید برگردانده می شود.

import numpy as np

arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 5, 10, 8, 2, 33])

newarr = np.divide(arr1, arr2)

print(newarr)

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

در منبع توضیح داده خروجی این مثال چیزی شبیه [3.33... 4. 3. 5. 25. 1.81...] است. این ها همان 10÷3 و 20÷5 و 30÷10 و بقیه تقسیم ها هستند.

توان با تابع power

تابع power() عددهای آرایه اول را به توان عددهای آرایه دوم می رساند. یعنی هر جفت عنصر را مثل پایه و توان در نظر می گیرد.

import numpy as np

arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 5, 6, 8, 2, 33])

newarr = np.power(arr1, arr2)

print(newarr)

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

طبق توضیح منبع، نتیجه شامل عددهای خیلی بزرگ است. چون مثلاً 10 به توان 3 یعنی 10×10×10 و 20 به توان 5 یعنی 20 را پنج بار در خودش ضرب می کنی.

باقیمانده با تابع های mod و remainder

تابع های mod() و remainder() هر دو در NumPy یک کار انجام می دهند. یعنی باقیمانده تقسیم عددهای آرایه اول بر عددهای آرایه دوم را حساب می کنند و در آرایه جدید می ریزند.

import numpy as np

arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 7, 9, 8, 2, 33])

newarr = np.mod(arr1, arr2)

print(newarr)

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

در منبع گفته شده خروجی این مثال [1 6 3 0 0 27] است. این همان باقیمانده های تقسیم مثل 10%3 و 20%7 و 30%9 و بقیه است.

اگر از تابع remainder() هم استفاده کنی، طبق منبع همان نتیجه را می گیری.

import numpy as np

arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 7, 9, 8, 2, 33])

newarr = np.remainder(arr1, arr2)

print(newarr)

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

خارج قسمت و باقیمانده با تابع divmod

تابع divmod() هم خارج قسمت را می دهد و هم باقیمانده را. خروجی این تابع در منبع دو آرایه است: اولی خارج قسمت ها، دومی باقیمانده ها.

import numpy as np

arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 7, 9, 8, 2, 33])

newarr = np.divmod(arr1, arr2)

print(newarr)

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

در متن منبع نمونه خروجی نشان داده شده است. آرایه اول شامل خارج قسمت ها است؛ یعنی بخش صحیح 10÷3 و 20÷7 و 30÷9 و بقیه. آرایه دوم شامل همان باقیمانده هایی است که قبلاً با mod دیدیم.

قدر مطلق با تابع absolute

در انتهای منبع، دو تابع absolute() و abs() معرفی شده که هر دو قدرمطلق را حساب می کنند. قدرمطلق یعنی فاصله عدد از صفر، بدون توجه به علامت مثبت یا منفی.

گفته شده بهتر است از absolute() استفاده کنیم تا با تابع abs داخلی پایتون قاطی نشود.

import numpy as np

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

newarr = np.absolute(arr)

print(newarr)

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

در منبع گفته خروجی این مثال [1 2 1 2 3 4] است. یعنی همه عددها مثبت شده اند و فقط مقدارشان مانده است.

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

برای مرور حساب ساده با ufunc در NumPy، این چند نکته کوتاه را نگه دار:

  • add برای جمع، subtract برای تفریق و multiply برای ضرب دو آرایه استفاده می شود.
  • divide برای تقسیم، و power برای توان های بزرگ عنصر به عنصر به کار می رود.
  • mod و remainder هر دو باقیمانده تقسیم را برمی گردانند.
  • divmod هم خارج قسمت ها و هم باقیمانده ها را در دو آرایه جدا می دهد.
  • تابع absolute قدرمطلق را عنصر به عنصر حساب می کند و علامت منفی را حذف می کند.