NumPy براڈکاسٹنگ

Numpy Bra Kas Ng



مختلف سائز کی صفوں کو ریاضی میں شامل نہیں کیا جا سکتا، اس سے منہا یا بصورت دیگر استعمال نہیں کیا جا سکتا۔ چھوٹے کی صف کو نقل کرنا ایک ہی نقطہ نظر ہے جیسا کہ بڑی صف کی طرح طول و عرض اور سائز دینے کے لیے۔ سرنی ریاضی کا انعقاد کرتے وقت، NumPy ایک خصوصیت پیش کرتا ہے جسے ارے براڈکاسٹنگ کہا جاتا ہے جو آپ کے کوڈ کو نمایاں طور پر مختصر اور آسان بنا سکتا ہے۔ آپ اس ٹیوٹوریل میں ارے براڈکاسٹنگ کے آئیڈیا اور اسے NumPy میں استعمال کرنے کے بارے میں سیکھیں گے۔ مزید برآں، کئی مثالی پروگرام فراہم کیے گئے ہیں۔

NumPy براڈکاسٹنگ کیا ہے؟

مختلف شکلوں کی صفوں پر ریاضی کی کارروائیوں کو انجام دیتے وقت، NumPy اس کو براڈکاسٹنگ سے تعبیر کرتا ہے۔ یہ صف کی کارروائیاں اکثر متعلقہ عناصر پر کی جاتی ہیں۔ اگر دو صفوں کی شکل ایک جیسی ہے تو یہ ان پر آسانی سے کیا جا سکتا ہے۔ اگرچہ یہ تصور مفید ہے، براڈکاسٹنگ کی ہمیشہ سفارش نہیں کی جاتی ہے کیونکہ اس کے نتیجے میں میموری کا غیر موثر استعمال ہو سکتا ہے جو حساب کو سست کر دیتا ہے۔ NumPy آپریشنز اکثر صف کے جوڑوں پر کیے جاتے ہیں جو عنصر کے حساب سے ٹوٹ جاتے ہیں۔

نشریات کے قواعد

نشر کرتے وقت رہنما اصولوں کے ایک مخصوص سیٹ پر عمل کرنا ضروری ہے۔ یہ ذیل میں بیان کیے گئے ہیں:







  1. نچلے درجے کی صف کی شکل کو 1s کے ساتھ پہلے سے جوڑا جانا ضروری ہے جب تک کہ اگر دو صفوں کا درجہ ایک جیسا نہ ہو تو ارے کی دونوں شکلیں ایک ہی لمبائی کا اشتراک کریں۔
  2. دو صفوں کو مطابقت پذیر سمجھا جاتا ہے اگر ان کا سائز ایک ہی ہے یا اگر ان میں سے ایک کا سائز 1 پر سیٹ کیا گیا ہے۔
  3. صفوں کو صرف ایک ساتھ نشر کیا جا سکتا ہے اگر ان کے سائز اور طول و عرض مماثل ہوں۔
  4. براڈکاسٹنگ مکمل ہونے کے بعد، ہر صف اس طرح کام کرتی ہے گویا اس کی شکل دو ان پٹ اریوں کی شکلوں میں سب سے بڑے عنصر سے ملتی ہے۔
  5. صفوں میں سے ایک ایسا برتاؤ کرتی ہے جیسے اسے اس جہت کے ساتھ نقل کیا گیا ہو اگر دوسری صف کی جہت 1 سے زیادہ ہو اور پہلی صف کی جہت 1 ہو۔

اب، نشریات کے تصور کو نافذ کرنے کی کچھ مثالوں پر بات کرتے ہیں۔



مثال 1:

صفوں کے جوڑے پر، NumPy آپریشنز عام طور پر عنصر بہ عنصر انجام پاتے ہیں۔ دو صفوں کی، انتہائی سیدھی صورت میں، ایک ہی شکل ہونی چاہیے، جیسا کہ ذیل کی مثال میں:



درآمد بے حس

one_arr = بے حس صف ( [ 2.0 , 3.0 , 1.0 ] )

two_arr = بے حس صف ( [ 3.0 , 3.0 , 3.0 ] )

پرنٹ کریں ( one_arr * دو_arr )





جیسا کہ آپ اوپر والے کوڈ سے دیکھ سکتے ہیں، ہمارے پاس دو صفیں ہیں: 'one_arr' اور 'to_arr'۔ جن میں سے ہر ایک کی الگ الگ اقدار ہیں۔ 'one_arr' میں اقدار [2.0,3.0,1.0] ہیں اور 'دو _arr' ہیں [3.0,3.0,3.0]۔ پھر آپ دیکھ سکتے ہیں کہ ان دو صفوں کی پیداوار کا حساب لگانے کا نتیجہ حسب ذیل ہے:



جب کچھ تقاضوں کو صفوں کے فارم سے پورا کیا جاتا ہے، NumPy کا براڈکاسٹنگ اصول اس پابندی کو کم کرتا ہے۔ جب کسی آپریشن میں ایک صف اور اسکیلر ویلیو کو جوڑ دیا جاتا ہے، تو براڈکاسٹنگ کو اس کی بنیادی شکل میں ظاہر کیا جاتا ہے۔ جیسا کہ آپ دیکھ سکتے ہیں، 3 'two_arr' نامی متغیر میں موجود ہے۔

درآمد بے حس

one_arr = بے حس صف ( [ 2.0 , 3.0 , 1.0 ] )

two_arr = 3.0

پرنٹ کریں ( one_arr * دو_arr )

مندرجہ بالا کوڈ مندرجہ ذیل نتیجہ پیدا کرتا ہے۔

پچھلی مثال میں، جہاں 'two_arr' ایک صف تھی، نتیجہ مساوی ہے۔ ہم ریاضی کے عمل کے دوران اسکیلر 'two_arr' کو ایک سرنی میں پھیلائے جانے کی تصویر بنا سکتے ہیں جس کی شکل 'one _arr' جیسی ہے۔ سرنی 'two_arr' میں نئے عناصر شامل ہیں جو صرف پہلے اسکیلر کے ڈپلیکیٹ ہیں۔ کھینچا تانی کا موازنہ محض فرضی ہے۔ براڈکاسٹنگ آپریشنز کو میموری کے طور پر اور کمپیوٹیشنل طور پر معاشی طور پر ممکن بنانے کے لیے، NumPy کاپیاں تیار کرنے کی بجائے اصل اسکیلر ویلیو کو استعمال کرنے کے لیے کافی ہوشیار ہے۔

مثال 2:

یہاں ایک اور سادہ Python پروگرام ہے جو براڈکاسٹنگ کرتا ہے۔ ایک بار پھر، دو صفیں بنائی گئی ہیں جن میں مختلف اقدار ہیں۔ بیرونی پروڈکٹ کا حساب لگانے کے لیے 'first_arr' کو 3×1 شکل والے کالم ویکٹر میں تبدیل کرنا ضروری ہے۔ اس کے بعد، سائز 3×2 کا نتیجہ فراہم کرنے کے لیے براڈکاسٹ 'second_arr' کے خلاف کیا جاتا ہے، جسے 'first_arr' اور 'second_arr' کی بیرونی پیداوار کہا جاتا ہے۔ ×3 نیز شکل (3،)۔

مندرجہ بالا تمام مراحل پر عمل کرنے کے بعد، میٹرکس کے ہر کالم میں ایک ویکٹر کو شامل کیا جانا چاہیے جو کہ ’نتیجہ_آرر‘ اور ’سیکنڈ_آرر‘ ہیں۔ ان کے طول و عرض 2×3 اور (2, ) ہیں۔ 'result_arr' کو منتقل کرنے سے 3×2 کی شکل ملے گی، جسے پھر وہی شکل حاصل کرنے کے لیے 'second_arr' کے خلاف نشر کیا جا سکتا ہے۔ عام طور پر، اس کو منتقل کرنے سے 2×3 کی شکل میں حتمی مصنوعہ حاصل ہوتا ہے۔

درآمد بے حس

first_arr = بے حس صف ( [ 12 , 24 , 14 ] )

سیکنڈ_آرر = بے حس صف ( [ پندرہ , 22 ] )

پرنٹ کریں ( بے حس نئی شکل دینا ( first_arr , ( 3 , 1 ) ) * دوسرا_آگ )

نتیجہ_آرر = بے حس صف ( [ [ 12 , 22 , 31 ] , [ پندرہ , 22 , چار پانچ ] ] )

پرنٹ کریں ( نتیجہ_آرر + پہلا_آرر )

پرنٹ کریں ( ( نتیجہ_آرر ٹی + سیکنڈ_آرر ) . ٹی )

پرنٹ کریں ( نتیجہ_arr + numpy. نئی شکل دینا ( سیکنڈ_آرر , ( دو , 1 ) ) )

پرنٹ کریں ( نتیجہ_آرر * دو )

آپ نیچے آؤٹ پٹ دیکھ سکتے ہیں۔

مثال 3:

درج ذیل Python پروگرام کا استعمال کرتے ہوئے تین جہتی صف کو نشر کیا جا سکتا ہے۔ اس مثال میں، 'first_arr' اور 'second_arr' نامی دو صفیں تیار کی گئی ہیں۔ صف 'first_arr' میں [4,13,26,12] اقدار ہیں اور 'second_arr' میں [32,67,45,17] اقدار ہیں۔ ابتدائی صف کے 2 جہتوں سے فرق پڑتا ہے۔ کوڈ پر عمل درآمد کے بعد پہلی اور دوسری صف کا مجموعہ ذیل میں دکھایا جائے گا۔ آپ دیکھ سکتے ہیں کہ ہمارے پاس کوڈ میں تین پرنٹ اسٹیٹمنٹس ہیں، جن میں سے ہر ایک متن کو ظاہر کرتا ہے 'پہلی صف:'، 'دوسری صف'، اور 'تیسری صف:'۔ اس کے بعد ان دو نئی تیار کردہ صفوں کا مجموعہ دکھایا گیا ہے۔

درآمد بے حس

first_arr = بے حس صف ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , چار پانچ , 17 ] ] )

سیکنڈ_آرر = بے حس صف ( [ 24 , چار پانچ , 66 , 87 ] )

پرنٹ کریں ( ' \n پہلی صف: ' )

پرنٹ کریں ( first_arr )

پرنٹ کریں ( ' \n دوسری صف: ' )

پرنٹ کریں ( سیکنڈ_آرر )

پرنٹ کریں ( ' \n پہلی اور دوسری صف کا مجموعہ: ' )

sum_result = first_arr + سیکنڈ_arr ;

پرنٹ کریں ( sum_result )

یہاں دیئے گئے کوڈ کا آؤٹ پٹ اسکرین شاٹ ہے۔

مثال 4:

آخری Python پروگرام جو تین جہتی صف کو نشر کرتا ہے یہاں دیا گیا ہے۔ اس پروگرام میں دو صفیں بیان کی گئی ہیں، جن میں سے پہلی تین جہتیں ہیں۔ پہلی اور دوسری صف کا مجموعہ دکھایا جائے گا جیسا کہ کوڈ پر عمل درآمد کے بعد اوپر دکھایا گیا ہے۔ اگرچہ ان صفوں میں قدریں مختلف ہوتی ہیں، لیکن باقی کوڈ وہی ہے جو اوپر دیے گئے مثال کے پروگرام میں استعمال کیا گیا ہے۔

درآمد بے حس

first_arr = بے حس صف ( [ [ 12 , چار پانچ , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ پچاس , 40 , 18 , 26 ] ] )

سیکنڈ_آرر = بے حس صف ( [ 12 , 44 , 22 , 12 ] )

پرنٹ کریں ( ' \n پہلی صف: ' )

پرنٹ کریں ( first_arr )

پرنٹ کریں ( ' \n دوسری صف: ' )

پرنٹ کریں ( سیکنڈ_آرر )

پرنٹ کریں ( ' \n پہلی اور دوسری صف کا مجموعہ: ' )

sum_result = first_arr + سیکنڈ_arr ;

پرنٹ کریں ( sum_result )

آپ نیچے دیے گئے اعداد و شمار میں دیکھ سکتے ہیں کہ پہلی صف سے ایک 3 جہتی سرنی پیش کی گئی ہے، اس کے بعد دوسری صف سے 2-جہتی سرنی اور ان دونوں کا نتیجہ براڈکاسٹنگ اصول کو استعمال کرتے ہوئے ہے۔

نتیجہ

اس مضمون میں نشریات پر تبادلہ خیال کیا گیا، ایک اہم ازگر کا تصور۔ NumPy میں، 'براڈکاسٹنگ' کی اصطلاح سے مراد ریاضی کی کارروائیوں کو انجام دینے کے دوران مختلف اشکال کی صفوں کو سنبھالنے کی صلاحیت ہے جو اکثر انجام دی جاتی ہیں۔ متذکرہ بالا موضوع کو مختلف مثالوں سے پوری طرح احاطہ کیا گیا ہے۔ اس مضمون نے بالترتیب 1-D، 2-D، اور 3-D صفوں پر نشر کرنے کا طریقہ دکھانے کے لیے ذکر کردہ مثالی پروگراموں کا استعمال کیا۔ آپ ان مثالوں کو اپنے سسٹم پر چلانے کی کوشش کر سکتے ہیں اور بہتر طور پر سمجھنے کے لیے نتائج دیکھ سکتے ہیں کہ عام طور پر ہر چیز کیسے کام کرتی ہے۔