عمليات المصفوفات والبث
نفّذ العمليات الحسابية المتجهة وافهم قواعد البث
عمليات المصفوفات والبث درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
الحساب المتجهي
يطبّق NumPy العمليات الحسابية على مستوى العناصر عبر المصفوفات بأكملها من دون حلقات Python، إذ تُنفّذ باستخدام شيفرة C محسّنة.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
print(a ** 2) # [1 4 9]الدوال الشاملة (ufuncs)
تطبّق ufuncs في NumPy دوال C على مستوى العناصر، مثل: np.sqrt وnp.exp وnp.log وnp.sin وغيرها.
import numpy as np
x = np.linspace(0, np.pi, 5)
print(np.sin(x)) # [0. 0.707 1. 0.707 0.]
print(np.exp([1.0, 2.0, 3.0])) # [2.718 7.389 20.086]عمليات الاختزال
اختزل مصفوفة إلى قيمة مفردة (أو مصفوفة ذات أبعاد أقل) باستخدام np.sum وnp.mean وnp.max وnp.min وnp.std.
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(m)) # 21
print(np.sum(m, axis=0)) # [5 7 9] — sum each column
print(np.sum(m, axis=1)) # [6 15] — sum each rowقواعد البث
يمدّد البث المصفوفات الأصغر لتطابق المصفوفات الأكبر، من دون نسخ البيانات. القاعدة: تُحاذى الأبعاد بدءًا من اليمين، وتُمدّد الأبعاد التي حجمها 1.
import numpy as np
a = np.array([[1], [2], [3]]) # shape (3,1)
b = np.array([10, 20, 30]) # shape (3,)
print(a + b)
# [[11 21 31]
# [12 22 32]
# [13 23 33]]بث العمليات على القيم المفردة
تُبث القيمة المفردة عبر جميع عناصر المصفوفة.
import numpy as np
arr = np.arange(6).reshape(2, 3)
print(arr + 10)
# [[10 11 12]
# [13 14 15]]
print(arr * 0.5)
# [[0. 0.5 1. ]
# [1.5 2. 2.5]]عمليات المقارنة والقيم المنطقية
تنتج المقارنات مصفوفات منطقية. ادمجها باستخدام & و| و~، وليس باستخدام and/or/not في Python.
import numpy as np
arr = np.array([1, 5, 3, 8, 2])
print(arr > 3) # [False True False True False]
print(arr[(arr > 2) & (arr < 7)]) # [5 3]where()
تعيد np.where(condition, x, y) العناصر من x عندما تكون القيمة True، ومن y عندما تكون False.
import numpy as np
arr = np.array([-2, 3, -1, 4, 0])
result = np.where(arr >= 0, arr, 0) # clip negatives to 0
print(result) # [0 3 0 4 0]التجميع على المحاور
حدّد axis= لإجراء الاختزال على بُعد معين من مصفوفة متعددة الأبعاد.
import numpy as np
data = np.arange(12).reshape(3, 4)
print(data.mean(axis=0)) # mean of each column → shape (4,)
print(data.mean(axis=1)) # mean of each row → shape (3,)cumsum وdiff
تحسب np.cumsum المجاميع التراكمية، بينما تحسب np.diff الفروق بين العناصر المتتالية.
import numpy as np
prices = np.array([100, 110, 105, 115])
print(np.cumsum(prices)) # [100 210 315 430]
print(np.diff(prices)) # [10 -5 10] (daily changes)عمليات السلاسل النصية المتجهية
توفر np.char عمليات متجهية على السلاسل النصية في مصفوفات السلاسل.
import numpy as np
words = np.array(["apple", "banana", "cherry"])
print(np.char.upper(words)) # ['APPLE' 'BANANA' 'CHERRY']
print(np.char.startswith(words, "a")) # [True False False]الأداء مقارنة بقوائم Python
يكون NumPy أسرع من حلقات Python المكافئة بمقدار يتراوح بين 10 و100 مرة في الأعمال الرقمية، لأنه ينفّذ الشيفرة في C من دون النفقات الإضافية لمفسّر Python.
import numpy as np, time
n = 1_000_000
start = time.perf_counter()
python_sum = sum(i**2 for i in range(n))
print(f"Python: {time.perf_counter()-start:.3f}s")
arr = np.arange(n)
start = time.perf_counter()
numpy_sum = (arr**2).sum()
print(f"NumPy: {time.perf_counter()-start:.3f}s")تحقّق سريع
عند جمع مصفوفة شكلها (3,1) مع مصفوفة شكلها (3,)، فما شكل النتيجة؟
مراجعة
تُنفّذ عمليات NumPy على مستوى العناصر في C (من دون حلقات Python). ويمدّد البث الأشكال المتوافقة من دون نسخ. استخدم axis= لإجراء الاختزال على أبعاد محددة. وتطبّق ufuncs، مثل np.sin وnp.exp وغيرها، العمليات على مستوى العناصر بسرعة C.
الأسئلة الشائعة
هل درس «عمليات المصفوفات والبث» مجاني؟
نعم — نص درس «عمليات المصفوفات والبث» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «عمليات المصفوفات والبث»؟
نفّذ العمليات الحسابية المتجهة وافهم قواعد البث تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «عمليات المصفوفات والبث»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مصفوفات NumPy وأنواع البيانات dtypes
- عمليات المصفوفات والبث
- الفهرسة والتقطيع والفهرسة المتقدمة
- الجبر الخطي باستخدام NumPy