مشخصات مقاله
-
0.0
-
1092
-
0
-
1
پخش (Broadcasting) در NumPy
در عملیات های ریاضی، ممکن است به آرایههایی با اشکال مختلف نیاز داشته باشیم. NumPy میتواند عملیاتهای این چنینی را که آرایههای با اشکال مختلف در آن دخیل هستند، به سادگی انجام دهد.
به عنوان مثال، بیایید عملیات ضرب ماتریس را در نظر بگیریم، اگر شکل دو ماتریس یکسان باشد، این عملیات به آسانی انجام میشود. با این حال، ممکن است نیاز باشد که در صورت عدم تطابق شکل، همچنان عملیات انجام شود.
عملیات ضرب دو آرایه در مثال زیر را در نظر بگیرید.
مثالimport numpy as np a = np.array([1,2,3,4,5,6,7]) b = np.array([2,4,6,8,10,12,14]) c = a*b; print(c)خروجی
[ 2 8 18 32 50 72 98]
در مثال فوق هر دو آرایه هم شکل هستند اما اگر عملیات را روی دو آرایه ی غیر هم شکل انجام دهیم، خطاهایی مانند زیر را دریافت میکنیم.
مثالimport numpy as np a = np.array([1,2,3,4,5,6,7]) b = np.array([2,4,6,8,10,12,14,19]) c = a*b; print(c)خروجی
ValueError: operands could not be broadcast together with shapes (7,) (8,)
در مثال فوق، میبینیم که شکل دو آرایه یکسان نیست و از این رو نمیتوان آنها را با یکدیگر ضرب کرد، اما NumPy میتواند این عملیات را با استفاده از مفهوم پخش (Broadcasting) انجام دهد.
در پخش، آرایه کوچکتر به آرایه بزرگتر پخش میشود تا اشکال آنها با یکدیگر سازگار شوند.
قوانین پخش (Broadcasting) در NumPy
پخش (Broadcasting) امکانپذیر است اگر موارد زیر برقرار باشند:
- 1. آرایه با ابعاد کوچکتر میتواند با اضافه کردن یک عدد '1' به شکل خود، به شکل آرایه دیگر تبدیل شود.
- 2. اندازه هر بعد در خروجی باید بزرگترین اندازه در ورودیها در آن بعد باشد.
- 3. ورودی در صورتی میتواند در محاسبه استفاده شود که اندازه آن در یک بعد خاص با اندازه خروجی مطابقت داشته باشد یا مقدار آن دقیقاً 1 باشد.
- 4. اگر اندازه ورودی در یک بعد 1 باشد، آن عدد اولین مقدار داده برای محاسبه در امتداد آن بعد استفاده میشود.
پخش (Broadcasting) میتواند به آرایهها اعمال شود اگر موارد زیر مرتبط باشند:
- 1. همه آرایههای ورودی شکل یکسانی داشته باشند.
- 2. آرایهها تعداد یکسانی از ابعاد داشته باشند، و طول هر بعد باید یک طول مشترک داشته باشد یا مقدار 1 باشد.
- 3. آرایه با تعداد کمتری از ابعاد میتواند با '1' به شکل خود اضافه شود.
حالا بیایید یک مثال از پخش (Broadcasting) را بررسی کنیم.
مثال
import numpy as np
a = np.array([[1,2,3,4],[2,4,5,6],[10,20,39,3]])
b = np.array([2,4,6,8])
print("\nprinting array a..")
print(a)
print("\nprinting array b..")
print(b)
print("\nAdding arrays a and b ..")
c = a + b;
print(c)
خروجی
printing array a.. [[ 1 2 3 4] [ 2 4 5 6] [10 20 39 3]] printing array b.. [2 4 6 8] Adding arrays a and b .. [[ 3 6 9 12] [ 4 8 11 14] [12 24 45 11]]