حاصل ضرب ها با ufunc (ufunc Products)
در این صفحه با حاصل ضرب ها با ufunc در NumPy آشنا می شوی. همه مثال ها دقیقاً از متن اصلی W3Schools برداشته شده اند و فقط شکل توضیح آن ها ساده تر شده است.
حاصل ضرب ها با ufunc در NumPy با np.prod
در متن منبع گفته شده برای پیدا کردن حاصل ضرب عناصر آرایه از تابع prod() استفاده کن.
در مثال اول، یک آرایه چهار عضوی ساخته شده است و حاصل ضرب همه عددها با np.prod حساب می شود.
import numpy as np
arr = np.array([1, 2, 3, 4])
x = np.prod(arr)
print(x)
طبق توضیح منبع، خروجی این مثال 24 است؛ چون 1×2×3×4 برابر 24 شده است.
در متن، یک مثال دیگر هم آمده که حاصل ضرب عناصر دو آرایه را پشت سرهم حساب می کند.
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
x = np.prod([arr1, arr2])
print(x)
در منبع نوشته شده خروجی این مثال 40320 است؛ یعنی حاصل ضرب 1 تا 8 کنار هم.
برای دیدن تصویر کامل تر از ufunc، می توانی بعداً سراغ صفحه جمع ها با ufunc هم بروی.
حاصل ضرب روی محور با پارامتر axis
در بخش Product Over an Axis منبع، گفته شده اگر axis=1 را مشخص کنی، NumPy حاصل ضرب هر آرایه را جداگانه برمی گرداند.
در مثال، همان دو آرایه قبلی استفاده شده اند اما این بار حاصل ضرب برای هر کدام جدا حساب شده است.
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
newarr = np.prod([arr1, arr2], axis=1)
print(newarr)
در متن منبع، خروجی این مثال [24 1680] معرفی شده است؛ یعنی حاصل ضرب آرایه اول 24 و حاصل ضرب آرایه دوم 1680 است.
نکته: همین مثال برای فهمیدن حاصل ضرب ها با ufunc روی محور کافی است و منبع مثال اضافه تری نشان نداده است.
حاصل ضرب تجمعی با np.cumprod
در بخش Cummulative Product منبع، نوشته شده حاصل ضرب تجمعی یعنی حاصل ضرب ها را مرحله به مرحله حساب کنیم.
در متن توضیح داده شده که برای آرایه [1, 2, 3, 4] حاصل ضرب تجمعی برابر [1, 2, 6, 24] می شود.
برای پیاده سازی این ایده، منبع از تابع cumprod() استفاده کرده است.
import numpy as np
arr = np.array([5, 6, 7, 8])
newarr = np.cumprod(arr)
print(newarr)
منبع گفته خروجی این مثال [5 30 210 1680] است؛ یعنی 5، بعد 5×6، بعد 5×6×7، بعد 5×6×7×8.
برای تمرین روی همین ایده در سه گام ساده جلو برو:
- آرایه ای کوچک مانند
[1, 2, 3]بساز. - یک بار
np.prodرا روی کل آرایه اجرا کن. - بار دیگر با
np.cumprodخروجی تجمعی را ببین و مقایسه کن.
این صفحه درباره حاصل ضرب ها با ufunc در NumPy کنار صفحات جمع ها و لگاریتم ها، زنجیره کامل تری از توابع ufunc می سازد.
جمع بندی سریع حاصل ضرب ها با ufunc
در پایان، چند نکته خیلی کوتاه از متن منبع:
np.prodحاصل ضرب عناصر یک آرایه را برمی گرداند.np.prodروی چند آرایه هم اجرا شده و حاصل ضرب کلی داده است.- با
axis=1حاصل ضرب هر آرایه جداگانه در خروجی دیده می شود. np.cumprodحاصل ضرب تجمعی عناصر را طبق مثال منبع می سازد.- مقادیر نمونه 24، 40320 و 1680 دقیقاً از مثال های W3Schools آمده اند.