وظيفة تطبيق NumPy

Wzyft Ttbyq Numpy



تتيح لنا المكتبة المدمجة التي تقدمها Python ، والمعروفة باسم NumPy ، إنشاء المصفوفات متعددة الأبعاد وتعديلها وإجراء عمليات حسابية متنوعة عليها. يتم توفير وظيفة التطبيق أيضًا من خلال حزمة NumPy. حالة الاستخدام النموذجية لوظيفة application مشابهة للسيناريو حيث نريد تقسيم مصفوفة وإجراء بعض العمليات على كل عنصر من عناصر القائمة ، على سبيل المثال ، إذا أردنا تربيع كل عنصر في الصف. بالطبع ، في Python ، نعلم أن حلقات for بطيئة لذا نود تجنبها إن أمكن. يمكن استخدام وظيفة 'تطبيق' إذا كنت تريد القيام بنفس العملية على كل صف أو عمود من إطار البيانات. بمعنى آخر ، إنه يفعل ما تريد القيام به باستخدام حلقة for-loop دون الحاجة إلى كتابة حلقة for-loop.

هناك طريقتان لتطبيق أي دالة على المصفوفة حسب الحالة. يمكننا تطبيق وظيفة 'تطبيق على المحور' والتي تكون مفيدة عندما نطبق الوظيفة على كل عنصر من عناصر المصفوفة واحدًا تلو الآخر ، وتكون مفيدة للمصفوفات ذات الأبعاد n. الطريقة الثانية هي 'تطبيق على طول المحور' والتي تنطبق على مصفوفة أحادية البعد.

بناء الجملة:

الطريقة 1: تطبيق على طول المحور

حبيبي. application_along_axis ( 1d_function و محور و آر و * أرغس و ** المحاجر )

في بناء الجملة ، لدينا وظيفة 'numpy.apply' التي نمرر إليها خمس وسيطات. الوسيطة الأولى وهي 'دالة 1d' تعمل على المصفوفة أحادية البعد ، وهو أمر مطلوب. بينما الوسيطة الثانية ، 'المحور' ، هي التي تريد تقسيم المصفوفة وتطبيق هذه الوظيفة عليها. المعلمة الثالثة هي 'arr' وهي المصفوفة المعطاة التي نريد تطبيق الوظيفة عليها. في حين أن '* args' و '* kwargs' هي وسيطات إضافية ليست ضرورية للإضافة.







مثال 1:

بالانتقال إلى فهم أفضل لطرق 'التطبيق' ، نقوم بعمل مثال للتحقق من عمل طرق التطبيق. في هذه الحالة ، نقوم بوظيفة 'application_along_Axis'. دعنا ننتقل إلى خطوتنا الأولى. نقوم أولاً بتضمين مكتبات NumPy الخاصة بنا كـ np. ثم نقوم بإنشاء مصفوفة تسمى 'arr' تحتوي على مصفوفة 3 × 3 بقيم صحيحة هي '8 ، 1 ، 7 ، 4 ، 3 ، 9 ، 5 ، 2 ، 6'. في السطر التالي ، نقوم بإنشاء متغير يسمى 'array' وهو مسؤول عن الاحتفاظ بنتيجة دالة application_along_Axis.



لهذه الوظيفة ، نمرر ثلاث حجج. الأولى هي الوظيفة التي نريد تطبيقها على المصفوفة ، وفي حالتنا هذه هي الدالة المصنفة لأننا نريد أن يتم فرز المصفوفة الخاصة بنا. بعد ذلك ، نمرر الوسيطة الثانية '1' مما يعني أننا نريد تقسيم المصفوفة على طول المحور = 1. Laslty ، نجتاز المصفوفة التي سيتم فرزها في هذه الحالة. في نهاية الكود ، نقوم ببساطة بطباعة كلا المصفوفتين - المصفوفة الأصلية وكذلك المصفوفة الناتجة - والتي يتم عرضها باستخدام تعليمة print ().



يستورد حبيبي كما على سبيل المثال

آر = على سبيل المثال مجموعة مصفوفة ( [ [ 8 و 1 و 7 ] و [ 4 و 3 و 9 ] و [ 5 و اثنين و 6 ] ] )

مجموعة مصفوفة = على سبيل المثال application_along_axis ( مرتبة و 1 و آر )

مطبعة ( 'المصفوفة الأصلية هي:' و آر )

مطبعة ( 'المصفوفة التي تم فرزها هي:' و مجموعة مصفوفة )





كما نرى في الإخراج التالي ، قمنا بعرض كلا المصفوفتين. في الأول ، يتم وضع القيم بشكل عشوائي في كل صف من المصفوفة. لكن في الثانية ، يمكننا أن نرى المصفوفة المرتبة. منذ أن مررنا المحور '1' ، لم يقم بفرز المصفوفة الكاملة ولكنه قام بفرزها حسب الصفوف كما هو معروض. يتم فرز كل صف. الصف الأول في المصفوفة المعطاة هو '8 و 1 و 7'. بينما في المصفوفة التي تم فرزها ، يكون الصف الأول '1 و 7 و 8'. مثل هذا ، يتم فرز كل صف.



الطريقة 2: تطبيق على المحور

حبيبي. application_over_axes ( func و أ و المحاور )

في الصيغة المحددة ، لدينا وظيفة numpy.apply_over_axis المسؤولة عن تطبيق الوظيفة على المحور المحدد. داخل دالة application_over_axis ، نقوم بتمرير ثلاث وسيطات. الأول هو الوظيفة التي يتعين القيام بها. الثاني هو المصفوفة نفسها. وآخرها هو المحور الذي نريد تطبيق الوظيفة عليه.

المثال 2:

في المثال التالي ، نقوم بتنفيذ الطريقة الثانية للدالة 'application' التي نحسب فيها مجموع المصفوفة ثلاثية الأبعاد. شيء واحد يجب تذكره هو أن مجموع مصفوفتين لا يعني أننا نحسب المصفوفة بأكملها. في بعض المصفوفات ، نحسب مجموع الصفوف مما يعني أننا نضيف الصفوف ونخرج العنصر الفردي منها.

دعنا ننتقل إلى التعليمات البرمجية الخاصة بنا. نقوم أولاً باستيراد حزمة NumPy ثم إنشاء متغير يحمل المصفوفة ثلاثية الأبعاد. في حالتنا ، المتغير هو 'arr'. في السطر التالي ، نقوم بإنشاء متغير آخر يحتوي على المصفوفة الناتجة من دالة application_over_axis. نقوم بتعيين وظيفة application_over_Axis للمتغير 'arr' بثلاث وسيطات. الوسيطة الأولى هي دالة NumPy المضمنة لحساب المجموع وهو np.sum. المعلمة الثانية هي المصفوفة نفسها. الوسيطة الثالثة هي المحور الذي يتم تطبيق الوظيفة عليه ، وفي هذه الحالة لدينا محور '[0 ، 2]'. في نهاية الكود ، ننفذ كلا المصفوفتين باستخدام عبارة print ().

يستورد حبيبي كما على سبيل المثال

آر = على سبيل المثال مجموعة مصفوفة ( [ [ [ 6 و 12 و اثنين ] و [ اثنين و 9 و 6 ] و [ 18 و 0 و 10 ] ] و

[ [ 12 و 7 و 14 ] و [ اثنين و 17 و 18 ] و [ 0 و واحد وعشرين و 8 ] ] ] )

مجموعة مصفوفة = على سبيل المثال application_over_axes ( على سبيل المثال مجموع و آر و [ 0 و اثنين ] )

مطبعة ( 'المصفوفة الأصلية هي:' و آر )

مطبعة ( 'مجموع المصفوفة هو:' و مجموعة مصفوفة )

كما هو موضح في الشكل التالي ، قمنا بحساب بعض المصفوفات ثلاثية الأبعاد الخاصة بنا باستخدام وظيفة application_over_axis. المصفوفة الأولى المعروضة هي المصفوفة الأصلية بالشكل '2 ، 3 ، 3' والثانية هي مجموع الصفوف. مجموع الصف الأول هو '53' ، والثاني هو '54' والآخر هو '57'.

استنتاج

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