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 وظائف لتنفيذ عمليات الجبر الخطي، مثل ضرب المصفوفات، وحساب القيم الذاتية، إلخ.
- الدوال المثلثية واللوغاريتمية: تقدم المكتبة دوال