السلام عليكم
شرحنا في الدروس الاربعة الماضية الكثير من الادوات المفيدة التي توفرها مكتبة (NumPy) العلمية لتسهيل التعامل مع المصفوفات بلغة بايثون وارفقنا الروابط للكثير من الادوات الاخرى التي لم يتم شرحها لأن هناك المئات منها ولو اردنا شرحها كلها فسيستغرق ذلك مدة طويلة جداً ولذا سيكون هذا الجزء هو الاخير من اجزاء شرح مكتبة (NumPy) وسنرفق معه روابط لأمثلة تشرح بقية الادوات التي لن نشرحها ليستطيع المهتمون الرجوع لها عند الحاجة كما سنشرح اي اداه لم يتم شرحها في هذه الاجزاء الخمسة حين نصل الى التطبيق العملي ونحتاجها.
سنتناول في هذا الدرس المواضيع التالية:
-
فهارس المصفوفات والتلاعب بها واستخدامها بشكل متقدم.
-
دالة ix_()
-
دوال الجبر الخطي
-
مقارنة الانواع المختلفة للمصفوفات
-
دوال منوعة
لنبدأ على بركة الله
الفهارس وخدع استخدامها:
بالاضافة الى فهرسة المصفوفات بالطرق الاعتيادية السابقة فأنه يمكننا استخدام مصفوفة للفهارس وكما في الامثلة التالية:
اما اذا كانت مصفوفة الفهرس متعددة الابعاد فلأستخدامها لفهرسة مصفوفة احادية البعد فأن البعد الاول منها سيستخدم فقط وكما في المثال التالي الذي يبين كيفية تحويل اسماء الالوان في صورة الى الالوان:
ملاحظة: لدمج او التعامل مع مصفوفات مختلفة الابعاد يمكن توحيد اشكالها بأستخدام دالة (reshape) التي تم شرحها سابقاً.
يمكننا ايضاً اعطاء فهارس (indexes) لأكثر من بعد من ابعاد المصفوفة الا ان هذه الفهارس يجب ان تكون بنفس الحجم وكما في الامثلة التالية:
يمكن ايضاً استخدام فهارس تتكون من قيم منطقية (صفر او واحد ) او (صح او خطأ) وكما في الامثلة التالية:
دالة ix_()
وتستخدم لدمج متجهات مختلفة للحصول على نتيجة تحتوي ازواج مرتبة من مكونات المتجهات المختلفة وكما تبينه الامثلة التالية:
النوع الاخير من الفهرسة يتم بأستخدام السلاسل الرمزية ويمكن ايجاد تفاصيل اكثر عنه في الرابط التالي
string indexing
الجبر الخطي:
ويتم استخدامها بأستدعاء المكتبة الفرعية التالية:
from numpy.linalg import *
وهذه بعض الامثلة للدوال التي تدعمها هذه المكتبة:
a.transpose() لأعطاء ترانسبز المصفوفة (الصفوف اعمدة والاعمدة صفوف)
inv(a) لأعطاء معكوس المصفوفة inverse
eye(2) تعطي مصفوفة التعريف التي تحتوي واحد في القطر الرئيسي واصفار في بقية اجزائها والتي تبدو كما في ادناه:
1 0
0 1
dot(j,j) لضرب المصفوفات ضرب نقطي dot product
solve(a,y) حل المعادلة الخطية (y) لأيجاد قيمة (a)
trace(a) مجموعة القيم في القطر الرئيسي للمصفوفة (a)
eig(b) ارجاع قيمة ال (eignvalue) للمصفوفة
ويمكن ايجاد تطبيق هذه الدوال في الامثلة التالية:
اضافة الى الهيكل البياني المسمى (array) هناك كلاس اخر ضمن مكتبة (numpy) اسمه (matrix) وله مواصفات مختلفة الى حد ما عن مواصفات (array) وهذه بعض من امثلة استخدامه:
الفروق الرئيسية بين (array) و (matrix) ضمن مكتبة (NumPy):
ال (array) هي مصفوفات ذات عدة ابعاد (تتراوح بين بعد واحد واي عدد من الابعاد) في حين ال (matrix) هي مصفوفات ذات بعدين عموماً
الفهارس للنوعين تعمل بنفس الطريقة ولها نفس الشروط
المصفوفات من نوع (matrix) يمكن ان تعمل كفهارس لمصفوفات من نفس النوع ولكن الافضل استخدام (array) او (list) لذلك.
كل من النوعين لها فهرسة تبدأ بصفر كبقية فهارس بايثون.
نصائح وخدع عامة لمكتبة NumPy
اعادة التشكيل بشكل اوتوماتيكي
ذكرنا سابقاً ان استخدام الفهرس (-1) يعني استخدم اي عدد بحسب الحاجة وهذا المثال يوضح الفكرة:
اذا كانت لديك مصفوفة من 30 عنصر واردت ان تجعل لها عدد محدد من الصفوف وعدد محدد من الابعاد ولكنك لا تريد تحديد بقية القيم فيمكن اتباع الطريقة التالية:
واخيراً لرسم البيانات بأستخدام مكتبة (numPy) نستخدم دالة ال (hostogram) والتي حين تطبيقها على مصفوفة معينة ترجع زوجاً من المتجهات وهي هستوغرام المصفوفة ومتجه الفهارس. لاحظ ان مكتبة (matplotlib) تحتوي على هستوغرام ايضاً (اسمه hist مثل الماتلاب) والذي يختلف عن الهستوغرام الخاص بال(numpy) والفرق الرئيسي ان دالة الهستوغرام الخاصة بمكتبة (numpy) يرجع البيانات فقط في حين هستوغرام ال(matplotlib) يرسم البيانات مباشرة.
وفي المثال ادناه يتبين كيفية استخدام ورسم الهستوغرام:
الى هنا ينتهي الحديث عن مكتبة (NumPy) في دورتنا المستمرة ان شاء الله وفي الدرس القادم سنبدأ الحديث عن مكتبة اخرى من مكتبات بايثون العلمية والتي سنستخدمها في امثلتنا المستقبلية عن علم البيانات وهي مكتبة (SciPy) والتي يمكن ايجاد كافة التفاصيل عنها في موقعها الرسمي
scipy.org
انتظرونا في الدرس القادم واتمنى ان يكون هذا الدرس مفيداً ومفهوماً للجميع
اخوكم مصطفى صادق لطيف
قام بإعادة تدوين هذه على Site Title.
إعجابإعجاب