گرد کردن اعشار با ufunc (ufunc Rounding Decimals)
اینجا یاد می گیری گرد کردن اعشار با ufunc در NumPy چطور کار می کند. یعنی عددهای اعشاری را یا می بُری، یا بالا و پایین گرد می کنی، آن هم با چند تابع آماده و راحت.
گرد کردن اعشار با ufunc در NumPy چیست؟
در منبع گفته شده پنج روش اصلی برای گرد کردن اعشار در NumPy داریم. هر روش مثل یک ابزار است و هرکدام کمی فرق دارند.
- حذف اعشار با truncation (بریدن قسمت اعشاری).
- حذف اعشار با fix که شبیه trunc است.
- گرد کردن معمولی با rounding و تابع
around. - گرد کردن رو به پایین با
floorتا نزدیک ترین عدد کوچکتر. - گرد کردن رو به بالا با
ceilتا نزدیک ترین عدد بزرگتر.
نکته: trunc و fix فقط اعشار را حذف می کنند، اما round، floor و ceil عدد را عوض می کنند.
برای تمرین با گرد کردن اعشار با ufunc در NumPy، این سه قدم ساده را برو:
- چند عدد اعشاری شبیه مثال ها در کد بنویس.
- روی همان اعداد، یکی یکی تابع های trunc، around، floor و ceil را تست کن.
- خروجی ها را مقایسه کن و ببین هر تابع چه تغییری می دهد.
حذف اعشار با trunc و fix
در قسمت Truncation منبع، گفته شده اعشار را حذف می کنیم و نزدیک ترین عدد به صفر را برمی گردانیم. برای این کار می توانیم از trunc() یا fix() استفاده کنیم.
هر دو تابع بخش اعشاری را می برند. یعنی -3.1666 می شود -3 و 3.6667 می شود 3.
import numpy as np
arr = np.trunc([-3.1666, 3.6667])
print(arr)
در مثال دوم منبع، همان کار را با fix() انجام می دهیم. باز هم اعشار حذف می شود و عدد به سمت صفر کشیده می شود.
import numpy as np
arr = np.fix([-3.1666, 3.6667])
print(arr)
نکته: trunc و fix در این مثال ها همان نتیجه را می دهند؛ فقط اعشار را می برند.
گرد کردن معمولی با around
در بخش Rounding منبع، تابع around() معرفی شده است. این تابع مثل گرد کردن معمولی عمل می کند: اگر رقم بعدی بزرگتر یا مساوی 5 باشد، عدد را یک واحد بالا می برد.
مثلاً اگر یک رقم اعشار نگه داریم، 3.16666 می شود 3.2 طبق توضیح منبع.
import numpy as np
arr = np.around(3.1666, 2)
print(arr)
در مثال منبع عدد 3.1666 را به دو رقم اعشار گرد می کنیم. یعنی خروجی چیزی نزدیک 3.17 می شود.
گرد کردن رو به پایین با floor
در بخش Floor منبع، گفته شده تابع floor() عدد اعشاری را به نزدیک ترین عدد صحیح کوچکتر می برد. یعنی همیشه رو به پایین می رود، حتی اگر عدد منفی باشد.
در توضیح منبع مثال زده که floor عدد 3.166 برابر 3 است.
import numpy as np
arr = np.floor([-3.1666, 3.6667])
print(arr)
در این مثال منبع، هم عدد منفی و هم عدد مثبت را floor می کنیم. هر دو به سمت پایین ترین عدد صحیح نزدیک خودشان می روند.
گرد کردن رو به بالا با ceil
در بخش Ceil منبع، تابع ceil() توضیح داده شده است. این تابع برعکس floor عمل می کند و عدد را به نزدیک ترین عدد صحیح بزرگتر می برد.
در متن منبع، مثال زده که ceil عدد 3.166 برابر 4 است.
import numpy as np
arr = np.ceil([-3.1666, 3.6667])
print(arr)
در مثال منبع، روی یک عدد منفی و یک عدد مثبت ceil اجرا می شود. هر دو به سمت بالاترین عدد صحیح نزدیک خودشان حرکت می کنند.
جمع بندی سریع گرد کردن اعشار با ufunc
حالا چند نکته کوتاه درباره گرد کردن اعشار با ufunc در NumPy را مرور کنیم:
truncوfixاعشار را می برند و عدد را به سمت صفر می برند.aroundمثل گرد کردن معمولی عمل می کند و می توانی تعداد اعشار را مشخص کنی.floorهمیشه عدد را رو به پایین تا نزدیک ترین عدد صحیح کم تر می برد.ceilهمیشه عدد را رو به بالا تا نزدیک ترین عدد صحیح بزرگ تر می برد.- انتخاب بین این توابع بستگی به نیاز محاسباتی و نوع گرد کردن تو دارد.