تفاضل ها با ufunc (ufunc Differences)
در این بخش با تفاضل ها با ufunc در NumPy آشنا می شوی. می بینی که چطور تابع diff() اختلاف های پشت سرهم را حساب می کند و حتی می تواند این کار را چندبار تکرار کند.
تفاضل گسسته با تابع np.diff
در منبع گفته شده تفاضل گسسته یعنی کم کردن دو عضوِ پشت سر هم آرایه.
مثلاً برای آرایه [1, 2, 3, 4]، تفاضل گسسته می شود [2-1, 3-2, 4-3] یعنی [1, 1, 1].
برای به دست آوردن این تفاضل ها، از تابع diff() در NumPy استفاده می شود.
در مثال منبع، روی آرایه ای با عددهای متفاوت این کار انجام شده است.
import numpy as np
arr = np.array([10, 15, 25, 5])
newarr = np.diff(arr)
print(newarr)
طبق توضیح منبع، خروجی این مثال [5 10 -20] است؛ چون 15−10، بعد 25−15 و در آخر 5−25 حساب شده اند.
اگر می خواهی کنار این موضوع، حاصل ضرب ufunc را هم ببینی، می توانی به صفحه حاصل ضرب ها با ufunc سر بزنی.
تکرار تفاضل ها با پارامتر n در np.diff
در ادامه منبع گفته شده می توان این عمل تفاضل گیری را چندبار پشت سرهم انجام داد.
برای این کار، در تابع diff() پارامتر n داده می شود تا تعداد دفعات تکرار مشخص شود.
مثلاً برای آرایه [1, 2, 3, 4]، اگر یک بار تفاضل بگیریم، به [1, 1, 1][0, 0]
در مثال منبع، همین ایده روی آرایه قبلی اجرا شده و n=2 تنظیم شده است.
import numpy as np
arr = np.array([10, 15, 25, 5])
newarr = np.diff(arr, n=2)
print(newarr)
طبق متن منبع، خروجی این مثال [5 -30] است؛ یعنی اول تفاضل های [5, 10, -20] به دست آمده اند و بعد یک بار دیگر بین آن ها تفاضل گرفته شده است.
نکته: همین دو مثال تمام چیزی است که منبع برای تفاضل ها با ufunc نشان داده و نکته اضافه ای خارج از این مثال ها بیان نکرده است.
تمرین گام به گام با تفاضل ها با ufunc در NumPy
برای تمرین ایده تفاضل ها با ufunc در NumPy می توانی این سه گام ساده را انجام دهی:
- یک آرایه ساده مثل
[1, 3, 6, 10]بساز. - یک بار با
np.diff(arr)خروجی را ببین و دقت کن. - سپس با
np.diff(arr, n=2)تفاضل دوباره را بررسی کن.
اگر در ادامه خواستی مباحث دیگر ufunc را هم دنبال کنی، صفحات جمع ها با ufunc و تفاضل ها با ufunc در NumPy در کنار همین مبحث، تصویر کامل تری به تو می دهند.
جمع بندی سریع تفاضل ها با ufunc
در پایان، چند نکته کوتاه و مستقیم از همان منبع:
- تفاضل گسسته یعنی کم کردن اعضای پشت سرهم آرایه.
- تابع
np.diff()این تفاضل های گسسته را محاسبه می کند. - خروجی مثال اول
[5 10 -20]از منبع گرفته شده است. - با پارامتر
nمی توان چندبار پیاپی تفاضل گیری کرد. - خروجی مثال دوم
[5 -30]نیز دقیقاً طبق مثال W3Schools است.