بث NumPy

Bth Numpy



لا يمكن إضافة المصفوفات ذات الأحجام المختلفة أو طرحها أو استخدامها بأي طريقة أخرى في الحساب. يعد تكرار المصفوفة الصغيرة لإعطائها نفس الأبعاد والحجم مثل المصفوفة الأكبر طريقة واحدة. عند إجراء العمليات الحسابية للمصفوفة ، تقدم NumPy ميزة تُعرف باسم بث المصفوفة التي يمكنها تقصير الكود الخاص بك وتبسيطه بشكل ملحوظ. ستتعرف على فكرة بث المصفوفة وكيفية استخدامها في NumPy في هذا البرنامج التعليمي. بالإضافة إلى ذلك ، يتم توفير العديد من أمثلة البرامج.

ما هو NumPy Broadcasting؟

عند إجراء عمليات حسابية على مصفوفات من أشكال مختلفة ، يشير NumPy إلى هذا على أنه إذاعة. يتم تنفيذ عمليات المصفوفة هذه بشكل متكرر على العناصر المعنية. إذا كان لمصفوفتين نفس الشكل ، فيمكن إجراؤه عليهما بسهولة. على الرغم من أن هذا المفهوم مفيد ، لا يوصى دائمًا بالبث لأنه قد يؤدي إلى استخدام غير فعال للذاكرة يؤدي إلى إبطاء الحساب. غالبًا ما يتم تنفيذ عمليات NumPy على أزواج مصفوفة مقسمة عنصرًا عنصرًا.

قواعد البث

يجب اتباع مجموعة معينة من الإرشادات عند البث. هذه موصوفة أدناه:







  1. من المهم أن يكون شكل مصفوفة الرتبة الأدنى مهمًا ليتم تقديمه مسبقًا بـ 1 حتى يشترك كلا شكلي المصفوفتين في نفس الطول إذا لم يكن لمصفوفتين نفس الترتيب.
  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 * two_arr )





كما ترى من الشفرة أعلاه ، لدينا صفيفتان: 'one_arr' و 'two_ arr'. لكل منها مجموعة منفصلة من القيم. القيم في 'one_arr' هي [2.0،3.0،1.0] و 'two _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 * two_arr )

ينتج عن الكود أعلاه النتيجة التالية.

في المثال السابق ، حيث كانت 'two_arr' مصفوفة ، تكون النتيجة متكافئة. قد نتصور أن العدد القياسي 'two_arr' يتم توسيعه أثناء العملية الحسابية إلى مصفوفة لها نفس الشكل مثل 'one _arr'. تحتوي المصفوفة 'two_arr' على عناصر جديدة هي مجرد نسخ مكررة من العدد الأول. مقارنة التمدد هي مجرد افتراضية. لجعل عمليات البث كذاكرة واقتصادية من الناحية الحسابية قدر الإمكان ، فإن NumPy ذكي بدرجة كافية لاستخدام القيمة العددية الأصلية بدلاً من إنتاج نسخ.

المثال 2:

إليك برنامج Python بسيط آخر يقوم بالبث. مرة أخرى ، يتم إنشاء مصفوفتين تحتويان على قيم مختلفة. من الضروري إعادة تشكيل 'first_arr' في متجه عمود بشكل 3 × 1 لحساب المنتج الخارجي. بعد ذلك ، يتم إجراء البث مقابل 'second_arr' لتوفير نتيجة بحجم 3 × 2 ، والمعروفة باسم المنتج الخارجي لـ 'first_arr' و 'second_arr.' البث إلى 2 × 3 ممكن لأن 'result_arr' لها الشكل 2 × 3 وكذلك الشكل (3).

بعد اتباع جميع الخطوات المذكورة أعلاه ، يجب تضمين متجه في كل عمود من المصفوفات التي تكون 'result_arr' و 'second_arr.' لها أبعاد 2 × 3 و (2 ،). سينتج عن نقل 'result_arr' شكل 3 × 2 ، والذي يمكن بثه بعد ذلك مقابل 'second_arr' للحصول على نفس الشكل. عادةً ما ينتج عن نقل هذا المنتج النهائي بالشكل 2 × 3.

يستورد حبيبي

first_arr = حبيبي. مجموعة مصفوفة ( [ 12 و 24 و 14 ] )

second_arr = حبيبي. مجموعة مصفوفة ( [ خمسة عشر و 22 ] )

مطبعة ( حبيبي. إعادة تشكيل ( first_arr و ( 3 و 1 ) ) * second_arr )

result_arr = حبيبي. مجموعة مصفوفة ( [ [ 12 و 22 و 31 ] و [ خمسة عشر و 22 و أربعة خمسة ] ] )

مطبعة ( result_arr + first_arr )

مطبعة ( ( result_arr. تي + second_arr ) . تي )

مطبعة ( result_arr + numpy. إعادة تشكيل ( second_arr و ( اثنين و 1 ) ) )

مطبعة ( result_arr * اثنين )

يمكنك عرض الإخراج أدناه.

المثال 3:

يمكن بث مصفوفة ثلاثية الأبعاد باستخدام برنامج Python التالي. في هذا المثال ، تم إنشاء مصفوفتين باسم 'first_arr' و 'second_arr'. تحتوي المصفوفة 'first_arr' على قيم [4،13،26،12] وتحتوي 'second_arr' على [32،67،45،17] قيمًا. الأبعاد الثنائية للمصفوفة الأولية تحدث فرقًا. سيتم عرض مجموع المصفوفة الأولى والثانية أدناه بعد تنفيذ الكود. يمكنك أن ترى أن لدينا ثلاث عبارات طباعة في الكود ، كل منها يعرض النص 'المصفوفة الأولى:' ، 'المصفوفة الثانية' ، و 'المصفوفة الثالثة:' بدورها. ثم يتم عرض مجموع هاتين المصفوفتين اللتين تم إنشاؤهما حديثًا.

يستورد حبيبي

first_arr = حبيبي. مجموعة مصفوفة ( [ [ 4 و 13 و 26 و 12 ] و [ 32 و 67 و أربعة خمسة و 17 ] ] )

second_arr = حبيبي. مجموعة مصفوفة ( [ 24 و أربعة خمسة و 66 و 87 ] )

مطبعة ( ' المجموعة الأولى: ' )

مطبعة ( first_arr )

مطبعة ( ' المجموعة الثانية: ' )

مطبعة ( second_arr )

مطبعة ( ' مجموع المصفوفة الأولى والثانية: ' )

sum_result = first_arr + second_arr ؛

مطبعة ( sum_result )

هذه هي لقطة الشاشة الناتجة عن الكود المحدد.

المثال 4:

يتم تقديم آخر برنامج Python الذي يبث مصفوفة ثلاثية الأبعاد هنا. تم تحديد صفيفتين في هذا البرنامج ، أولهما له ثلاثة أبعاد. سيظهر مجموع المصفوفة الأولى والثانية كما هو موضح أعلاه بعد تنفيذ الكود. على الرغم من اختلاف القيم في هذه المصفوفات ، فإن الشفرة المتبقية هي نفسها المستخدمة في المثال البرنامج أعلاه.

يستورد حبيبي

first_arr = حبيبي. مجموعة مصفوفة ( [ [ 12 و أربعة خمسة و 22 و 13 ] و [ 22 و 54 و 25 و 12 ] و [ خمسون و 40 و 18 و 26 ] ] )

second_arr = حبيبي. مجموعة مصفوفة ( [ 12 و 44 و 22 و 12 ] )

مطبعة ( ' المجموعة الأولى: ' )

مطبعة ( first_arr )

مطبعة ( ' المجموعة الثانية: ' )

مطبعة ( second_arr )

مطبعة ( ' مجموع المصفوفة الأولى والثانية: ' )

sum_result = first_arr + second_arr ؛

مطبعة ( sum_result )

يمكنك أن ترى في الشكل أدناه أنه يتم تقديم مصفوفة ثلاثية الأبعاد من المصفوفة الأولى ، متبوعة بمصفوفة ثنائية الأبعاد من المصفوفة الثانية ونتيجة هذين يستخدمان مبدأ البث.

استنتاج

ناقش هذا المقال البث ، وهو مفهوم مهم لبايثون. في NumPy ، يشير مصطلح 'البث' إلى القدرة على التعامل مع المصفوفات ذات الأشكال المختلفة أثناء إجراء العمليات الحسابية التي يتم إجراؤها بشكل متكرر. تمت تغطية الموضوع المذكور أعلاه بدقة مع مجموعة متنوعة من الأمثلة. استخدمت هذه المقالة أمثلة البرامج المذكورة لتوضيح كيفية البث على مصفوفات 1-D و 2-D و 3-D ، على التوالي. يمكنك محاولة تشغيل هذه الأمثلة على نظامك وعرض النتائج لفهم أفضل لكيفية عمل كل شيء بشكل عام.