NumPy مكتبة أساسية للحوسبة العددية في Python، تقدم أدوات قوية لمعالجة المصفوفات بكفاءة. يتعمق هذا البرنامج التعليمي في مفهومين أساسيين: العمليات الحسابية والبث، وهما أساسيان لكتابة شفرة عددية موجزة وعالية الأداء.
جدول المحتويات
1. العمليات الحسابية
يوسع NumPy بسلاسة عوامل التشغيل الحسابية في Python (+, -, *, /, //, %, **) للعمل مباشرة على مصفوفات NumPy. هذه العمليات عنصرية، مما يعني أنها تنطبق على العناصر المتناظرة في المصفوفات. دعونا نوضح ذلك بأمثلة:
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
print("الجمع:", arr1 + arr2) # الإخراج: [ 6 8 10 12]
print("الطرح:", arr1 - arr2) # الإخراج: [-4 -4 -4 -4]
print("الضرب:", arr1 * arr2) # الإخراج: [ 5 12 21 32]
print("القسمة:", arr1 / arr2) # الإخراج: [0.2 0.33333333 0.42857143 0.5 ]
print("القسمة الصحيحة:", arr1 // arr2) # الإخراج: [0 0 0 0]
print("الباقي:", arr1 % arr2) # الإخراج: [1 2 3 4]
print("الأس:", arr1 ** arr2) # الإخراج: [ 1 64 2187 65536]
تُوسع هذه العملية العنصرية بسهولة إلى المصفوفات متعددة الأبعاد.
2. البث
البث هو ميزة قوية في NumPy تُمكّن العمليات بين مصفوفات بأشكال مختلفة، وفقًا لشروط محددة. فهو يلغي الحاجة إلى التكرار الصريح، مما يعزز الأداء بشكل كبير. قواعد البث الأساسية هي:
- القاعدة 1: إذا كانت المصفوفات ذات أبعاد غير متساوية، يتم إضافة أصفار في بداية شكل المصفوفة الأصغر حتى يتطابق مع بُعد المصفوفة الأكبر.
- القاعدة 2: إذا كان للمصفوفة بُعد بحجم 1 والمصفوفة الأخرى ذات بُعد أكبر من 1، يتم تمديد بُعد الحجم 1 لمطابقة البُعد الأكبر.
- القاعدة 3: إذا كانت المصفوفات ذات أبعاد مختلفة ولا يوجد أي منها بحجم 1، يتم رفع
ValueError
.
دعونا نوضح البث:
import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([10, 20, 30])
result = arr1 + arr2 # البث قيد التنفيذ
print(result)
# الإخراج:
# [[11 22 33]
# [14 25 36]]
هنا، يتم بث arr2
(الشكل (3,)) لمطابقة شكل arr1
(2، 3). يتم إضافة كل صف من arr1
إلى arr2
، مما يتجنب التكرار الصريح. إتقان البث أمر بالغ الأهمية لكتابة شفرة NumPy فعالة وقابلة للقراءة. ضع دائمًا في اعتبارك أشكال المصفوفة لتجنب النتائج أو الأخطاء غير المتوقعة.