NumPy – العمل مع المصفوفات والمصفوفات متعددة الأبعاد

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة
```html

html

مقدمة إلى NumPy: أساس الحسابات العلمية في Python

NumPy هي مكتبة Python أساسية للحسابات العلمية. توفر دعماً قوياً للمصفوفات متعددة الأبعاد والمصفوفات (matrices)، بالإضافة إلى مجموعة واسعة من الوظائف للتعامل معها. تعتبر NumPy أداة لا غنى عنها لمحللي البيانات، ومتخصصي التعلم الآلي، والعاملين في المجال العلمي.

تتيح NumPy معالجة كميات كبيرة من البيانات بكفاءة وتنفيذ العمليات الرياضية، مما يستبدل الحلقات (loops) بكود مضغوط ومتجه (vectorized). تحتوي المكتبة على وظائف مدمجة للجبر الخطي والإحصاء.

تثبيت واستيراد مكتبة NumPy

للبدء في العمل مع NumPy، يجب تثبيتها واستيرادها إلى مشروعك.

تثبيت NumPy

يتم تثبيت المكتبة باستخدام

معالجة القيم المفقودة (NaN)

للتعامل مع القيم المفقودة، تستخدم NumPy np.nan.

arr = np.array([1, 2, np.nan, 4, 5])
print(np.isnan(arr)) # [False False  True False False]

لمعالجة NaN، تُستخدم وظائف خاصة مثل nanmean()، nanstd()، nansum()، والتي تتجاهل القيم المفقودة.

أداء NumPy مقابل Python الخالص

NumPy مكتوب بلغة C ويعمل بشكل أسرع بكثير من Python الخالص، خاصة عند تنفيذ العمليات على المصفوفات الكبيرة. ويرجع ذلك إلى التوجيه الفعال (vectorization) والتحسين.

import time
import numpy as np

size = 100000

# Python list
lista = list(range(size))
listb = list(range(size))

starttime = time.time()
resultpython = [a + b for a, b in zip(lista, listb)]
pythontime = time.time() - starttime

# NumPy array
anp = np.arange(size)
bnp = np.arange(size)

starttime = time.time()
resultnumpy = anp + bnp
numpytime = time.time() - starttime

print(f"Python time: {pythontime:.4f} seconds")
print(f"NumPy time: {numpytime:.4f} seconds")

يمكن أن يصل الفرق في الأداء إلى عشرات ومئات المرات على مجموعات البيانات الكبيرة.

حالات استخدام واقعية لـ NumPy

تُستخدم NumPy في مجالات مختلفة:

  • العلوم: معالجة البيانات التجريبية
  • المالية: تحليل السلاسل الزمنية
  • التعلم الآلي: تحضير البيانات وتطبيعها، والنمذجة
  • رسومات الحاسوب: العمل مع الصور
  • التعليم: تصور الدوال الرياضية والخوارزميات

الأسئلة الشائعة (FAQ)

ما الفرق بين مصفوفة NumPy وقائمة Python؟

مصفوفة NumPy هي بنية بيانات تخزن الأرقام على شكل جداول (tensors)، ولها نوع بيانات ثابت وتدعم العمليات المتجهة. قائمة Python أكثر مرونة ولكنها أقل كفاءة في الحسابات الرقمية.

كيفية إنشاء مصفوفة صفرية بحجم 3x3؟

matrix = np.zeros((3, 3))

كيفية تحويل المصفوفة (transpose)؟

transposedmatrix = matrix.T

كيفية ضرب المصفوفات؟

result = matrix1 @ matrix2

كيفية إيجاد المصفوفة العكسية؟

inversedmatrix = np.linalg.inv(matrix)

الفئات الرئيسية لوظائف NumPy

توفر NumPy مجموعة واسعة من الوظائف لمهام مختلفة:

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

توصيات