Python دورة NumPy للمبتدئين

⚡ ملخص ذكي

NumPy هي الأساس Python مكتبة للحوسبة العددية، تدعم المصفوفات، والجبر الخطي، وأخذ العينات العشوائية. يشرح هذا الدليل التعليمي لـ NumPy عملية التثبيت، وإنشاء المصفوفات، وإعادة التوزيع.ping، والتقطيع، والإحصاء، وحساب المصفوفات مع قابلية التشغيل Python أمثلة.

  • الاستخدام الأساسي: المصفوفات السريعة متعددة الأبعاد والرياضيات المتجهة في Python.
  • ⚙️ المهام الرئيسية: الأصفار، الآحاد، إعادة التشكيل، المكدس الأفقي، النقطة، المسافة بين الأسطر.
  • 📚 Foundations: الجبر الخطي، البث، الإحصاء، التقطيع.
  • 🚀 النسخة الحالية: أصبح NumPy 2.x (الذي تم إصداره في يونيو 2024) مستقرًا الآن.
  • 🤖 استخدام الذكاء الاصطناعي: العمود الفقري لـ PyTorch، TensorFlow، JAX، وCuPy tensors.

Python البرنامج التعليمي NumPy

ما هو NumPy في Python?

نمباي هو مفتوح المصدر Python مكتبة برمجية للرياضيات والعلوم والهندسة وعلوم البيانات. وهي مكتبة مفيدة للغاية للعمليات الرياضية والإحصائية في Pythonيعمل بشكل مثالي مع المصفوفات متعددة الأبعاد وضرب المصفوفات، ويتكامل بسهولة مع لغة C/C++ و Fortran.

في أي مشروع علمي، تُعد NumPy الأداة الأمثل. فهي مصممة للتعامل مع المصفوفات متعددة الأبعاد، والجبر الخطي، وتوليد الأرقام العشوائية، وتحويلات فورييه، وغير ذلك الكثير.

NumPy يعطي Python دعم ممتاز للمصفوفات متعددة الأبعاد، بالإضافة إلى مجموعة كبيرة من العمليات الرياضية التي تُجرى عليها. في هذا الدليل، سنستعرض الوظائف الأساسية التي تحتاج إلى معرفتها قبل الانتقال إلى البرنامج التعليمي الخاص بـTensorFlow".

لماذا نستخدم NumPy؟

يتميز NumPy بكفاءة عالية في استخدام الذاكرة، لذا يمكنه التعامل مع كميات كبيرة من البيانات الرقمية بسهولة أكبر من المكتبات النقية. Python القوائم. كما أنها ملائمة جدًا لضرب المصفوفات وإعادة التشكيلpingوهو سريع لأن العمل الشاق يُوكل إلى إجراءات C المُجمّعة. في الواقع، مكتبات مثل TensorFlow وPyTorتعتمد مكتبات ch و Scikit-learn على مصفوفات NumPy لإجراء العمليات الحسابية على المصفوفات في الواجهة الخلفية، مما يجعل NumPy بمثابة العمود الفقري الصامت لمعظم عمليات علوم البيانات والذكاء الاصطناعي الحديثة.

كيفية تثبيت NumPy

لتثبيت مكتبة NumPy، راجع دليلنا التعليمي. كيفية تثبيت TensorFlow. يتم تثبيت NumPy افتراضيًا مع Anaconda.

في حالة نادرة، إذا لم يتم تثبيت NumPy، فاستخدم أيًا من الخيارات أدناه.

يمكنك تثبيت NumPy باستخدام Anaconda:

conda install -c anaconda numpy
  • In Jupyter دفتر:
import sys
!conda install --yes --prefix {sys.prefix} numpy

يمكن لمستخدمي Pip التثبيت أو الترقية باستخدام أمر واحد:

pip install --upgrade numpy

قم باستيراد NumPy والتحقق من الإصدار

أمر استيراد numpy هو:

import numpy as np

السطر أعلاه يُعيد تسمية مساحة اسم NumPy إلى npيتيح لك هذا الاختصار إضافة بادئة إلى دوال NumPy وطرقها وخصائصها. np. بدلاً من typing numpy.وهو الاتفاق القياسي الذي ستجده في جميع أنحاء نظام NumPy البيئي.

للتحقق من إصدار NumPy المثبت لديك، استخدم الأمر التالي:

print(np.__version__)

الإخراج:

2.1.3

تم إصدار NumPy 2.0 في يونيو 2024 وهو الإصدار الرئيسي المستقر الحالي. إذا كان مشروعك لا يزال يعتمد على واجهة برمجة التطبيقات 1.x، فقم بتثبيته على الإصدار 1.x. numpy<2 في ملف المتطلبات الخاص بك لأن بعض الأسماء المستعارة القديمة مثل np.float تمت إزالتها في الإصدار 2.0.

ما هو Python صفيف NumPy؟

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

كما يوحي الاسم، فإن مصفوفة NumPy هي بنية البيانات المركزية لمكتبة NumPy. والاسم نفسه اختصار لكلمة "Numeric" (عددي). Python" أو "رقمي Python"والمصفوفة متعددة الأبعاد عبارة عن كتلة متجانسة ذات حجم ثابت من الذاكرة ذات شكل ونوع بيانات معروفين.

إنشاء مصفوفة NumPy

أبسط طريقة لإنشاء مصفوفة في NumPy هي البدء من Python قائمة.

myPythonList = [1,9,8,3]

تحويل Python تحويل قائمة إلى مصفوفة NumPy باستخدام np.array.

numpy_array_from_list = np.array(myPythonList)

اعرض محتويات المصفوفة.

numpy_array_from_list

الإخراج:

array([1, 9, 8, 3])

في الممارسة العملية، ليست هناك حاجة للإعلان عن Python ابدأ بالقائمة أولاً. يمكن دمج الخطوتين.

a = np.array([1,9,8,3])

NOTE: يذكر توثيق NumPy أيضًا np.ndarray، لكن np.array هذه هي وظيفة المصنع الموصى بها للاستخدام اليومي.

يمكنك أيضًا إنشاء مصفوفة NumPy من مجموعة بنفس الطريقة.

رياضي Operations على صفيف

يمكنك إجراء عمليات حسابية مثل الجمع والطرحtracعمليات الضرب والقسمة على المصفوفات. الصيغة هي اسم المصفوفة متبوعًا بالمعامل (+, -, *, /)، متبوعًا بالمعامل. هذه العمليات مُتجهة، مما يعني أن NumPy تُطبقها على كل عنصر دون الحاجة إلى تحديد صريح. Python عقدة.

على سبيل المثال:

numpy_array_from_list + 10

الإخراج:

array([11, 19, 18, 13])

تضيف هذه العملية 10 إلى كل عنصر من عناصر مصفوفة NumPy.

شكل المصفوفة

يمكنك التحقق من شكل المصفوفة باستخدام shape السمة، التي يمكن الوصول إليها بإلحاقها باسم المصفوفة. وبنفس الطريقة يمكنك التحقق من النوع باستخدام dtype.

import numpy as np
a = np.array([1,2,3])
print(a.shape)
print(a.dtype)

(3,)
int64

العدد الصحيح هو قيمة بدون فاصلة عشرية. إذا أنشأت مصفوفة تحتوي على أعداد عشرية، فسيتغير نوع البيانات إلى عدد عشري (float).

#### Different type
b = np.array([1.1,2.0,3.2])
print(b.dtype)

float64

2 مصفوفة البعد

يمكنك إضافة بُعد باستخدام فاصلة داخل الأقواس.

لاحظ أن المجموعات الداخلية يجب أن تكون داخل الأقواس الخارجية. [].

### 2 dimension
c = np.array([(1,2,3),
              (4,5,6)])
print(c.shape)
(2, 3)

3 مصفوفة البعد

يمكن إنشاء أبعاد أعلى بنفس الطريقة.

### 3 dimension
d = np.array([
    [[1, 2,3],
        [4, 5, 6]],
    [[7, 8,9],
        [10, 11, 12]]
])
print(d.shape)
(2, 2, 3)
الهدف Code
إنشاء مصفوفة صفيف([1,2,3])
طباعة الشكل صفيف ([.]).الشكل

ما هو numpy.zeros()؟

numpy.zeros () or np.zeros هو Python دالة تُستخدم لإنشاء مصفوفة مليئة بالأصفار. numpy.zeros() يُعد هذا مفيدًا عندما تحتاج إلى تهيئة الأوزان أثناء التكرا�� الأول في TensorFlow أو إعداد مخازن مؤقتة مؤقتة لمهام إحصائية أخرى.

numpy.zeros() بناء جملة الدالة

numpy.zeros(shape, dtype=float, order='C')

Python numpy.zeros() المعلمات

هنا،

  • الشكل : شكل مصفوفة NumPy الصفرية.
  • نوعنوع بيانات العناصر. وهو اختياري، والقيمة الافتراضية هي float64.
  • الطلبالوضع الافتراضي هو Cوهو تخطيط الصفوف الرئيسي المستخدم بواسطة numpy.zeros() in Python.

Python numpy.zeros() مثال

import numpy as np
np.zeros((2,2))

الإخراج:

array([[0., 0.],
          [0., 0.]])

مثال على صفر numpy مع نوع البيانات

import numpy as np
np.zeros((2,2), dtype=np.int16)

الإخراج:

array([[0, 0],
         [0, 0]], dtype=int16)

ما هو numpy.ones()؟

وظيفة np.ones() يُنشئ مصفوفة مليئة بالآحاد. numpy.ones() in Python يُعد هذا مفيدًا عند تهيئة الأوزان خلال التكرار الأول في TensorFlow وللمهام الإحصائية الأخرى.

Python numpy.ones() بناء الجملة

numpy.ones(shape, dtype=float, order='C')

Python numpy.ones() المعلمات

هنا،

  • الشكل شكل np.ones Python مجموعة.
  • نوعنوع بيانات العناصر. وهو اختياري، والقيمة الافتراضية هي float64.
  • الطلبالوضع الافتراضي هو Cوهو تخطيط الصفوف الرئيسية.

Python numpy.ones() مصفوفة ثنائية الأبعاد مع مثال لنوع البيانات

import numpy as np
np.ones((1,2,3), dtype=np.int16)

الإخراج:

array([[[1, 1, 1],
       [1, 1, 1]]], dtype=int16)

وظيفة numpy.reshape() في Python

Python إعادة تشكيل NumPy يُغيّر هذا الإجراء شكل المصفوفة دون تغيير بياناتها. قد تحتاج إلى إعادة تشكيل البيانات من تنسيق عريض إلى تنسيق طويل، أو تحويلها من متجه أحادي البعد إلى مصفوفة ثنائية الأبعاد قبل إدخالها إلى النموذج. np.reshape تتولى الدالة هذه المهمة في استدعاء واحد.

بناء جملة np.reshape()

numpy.reshape(a, newShape, order='C')

هنا،

aالمصفوفة التي تريد إعادة تشكيلها.

الشكل الجديدالشكل الجديد المرغوب.

الطلبالوضع الافتراضي هو C، تخطيط الصفوف الرئيسية.

مثال على إعادة تشكيل NumPy

import numpy as np
e = np.array([(1,2,3), (4,5,6)])
print(e)
e.reshape(3,2)

الإخراج:

 // Before reshape
[[1 2 3]
 [4 5 6]]
//After Reshape
array([[1, 2],
	[3, 4],
	[5, 6]])

numpy.flatten() في Python

Python NumPy تتسطح تُعيد هذه الدالة نسخة من المصفوفة مُصغّرة إلى بُعد واحد. عند العمل مع الشبكات العصبية مثل الشبكات العصبية الالتفافية، غالبًا ما تحتاج إلى تسطيح موتر الصورة قبل تمريره إلى طبقة كثيفة. np.flatten() تتولى الدالة معالجة هذا الأمر في استدعاء واحد.

بناء جملة np.flatten()

numpy.flatten(order='C')

هنا،
الطلبالوضع الافتراضي هو C، تخطيط الصفوف الرئيسية.

مثال على NumPy Flatten

e.flatten()

الإخراج:

array([1, 2, 3, 4, 5, 6])

ما هو numpy.hstack() في Python?

numpy.hstack هو Python دالة تُستخدم لتكديس سلاسل من مصفوفات الإدخال أفقيًا في مصفوفة واحدة. hstack()يمكنك إضافة البيانات على طول محور الأعمدة. إنها أداة مساعدة مفيدة للغاية في NumPy عندما تحتاج إلى دمج متجهات الميزات جنبًا إلى جنب.

هيا بنا ندرس hstack in Python مع مثال.

على سبيل المثال:

## Horizontal Stack
import numpy as np
f = np.array([1,2,3])
g = np.array([4,5,6])
print('Horizontal Append:', np.hstack((f, g)))

الإخراج:

Horizontal Append: [1 2 3 4 5 6]

ما هو numpy.vstack() في Python?

numpy.vstack هو Python دالة تُستخدم لتكديس سلاسل من مصفوفات الإدخال عموديًا في مصفوفة واحدة. vstack()، تقوم بإلحاق البيانات على طول محور الصف، وهو أمر مفيد عندما تريد دمج مجموعات من العينات.

دعونا ندرس ذلك من خلال مثال.

على سبيل المثال:

## Vertical Stack
import numpy as np
f = np.array([1,2,3])
g = np.array([4,5,6])
print('Vertical Append:', np.vstack((f, g)))

الإخراج:

Vertical Append: [[1 2 3]
 [4 5 6]]

بعد دراسة NumPy vstack �� hstackدعونا نلقي نظرة على مثال يقوم بتوليد أرقام عشوائية في NumPy.

توليد عشوائي Numbers باستخدام NumPy

لتوليد أرقام عشوائية من توزيع غاوسي، استخدم:

numpy.random.normal(loc, scale, size)

هنا،

  • مكانالمتوسط. مركز التوزيع.
  • حجم: الانحراف المعياري.
  • المقاسعدد العينات المُعادة.

على سبيل المثال:

## Generate random numbers from a normal distribution
normal_array = np.random.normal(5, 0.5, 10)
print(normal_array)
[5.56171852 4.84233558 4.65392767 4.946659   4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]

إذا تم رسم التوزيع، فسيكون مشابهاً للرسم البياني التالي.

مثال لتوليد عشوائي Numbers باستخدام NumPy
مثال لتوليد عشوائي Numbers باستخدام NumPy

لاحظ أن التعليمات البرمجية الأحدث تستخدم بشكل متزايد واجهة برمجة التطبيقات الحديثة للمولدات، np.random.default_rng()وهو البديل الموصى به للنسخة القديمة np.random.normal استدعاءات في NumPy 2.x.

وظيفة NumPy Asarray

استخدم asarray() تقوم هذه الدالة بتحويل المدخلات إلى مصفوفة. يمكن أن تكون المدخلات قائمة، أو صفًا، أو مصفوفة متعددة الأبعاد، أو تسلسلًا مشابهًا.

بناء الجملة:

numpy.asarray(data, dtype=None, order=None)

هنا،

البيانات: البيانات التي تريد تحويلها إلى مصفوفة.

dtypeاختياري. إذا لم يتم تحديده، فسيتم استنتاج نوع البيانات من بيانات الإدخال.

الطلبالوضع الافتراضي هو C، وهو تخطيط الصفوف الرئيسية. الخيار الآخر هو F (Fortra(نمط العمود الرئيسي n).

على سبيل المثال:

ضع في اعتبارك المصفوفة ثنائية الأبعاد التالية المكونة من أربعة صفوف وأربعة أعمدة، مملوءة بالرقم 1.

import numpy as np
A = np.matrix(np.ones((4,4)))

إذا حاولت تغيير قيمة في المصفوفة من خلال np.arrayلم يتم تعديل الأصل. والسبب هو أن np.array يقوم بإنشاء نسخة من المصفوفة.

np.array(A)[2]=2
print(A)
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]

المصفوفة لم تتغير. استخدم asarray عندما تريد تعديل المصفوفة الأصلية في مكانها. لنرَ ما يحدث عندما تُعيّن الصف الثالث إلى القيمة 2.

np.asarray(A)[2]=2
print(A)

Code التفسير:

np.asarray(A) تحويل المصفوفة A إلى عرض المصفوفة.

[2] يختار الصف الثالث.

الإخراج:

[[1. 1. 1. 1.]
      [1. 1. 1. 1.]
      [2. 2. 2. 2.] # new value
      [1. 1. 1. 1.]]

ما هو numpy.arange()؟

numpy.arange () هي دالة مدمجة في NumPy تُعيد مصفوفة متعددة الأبعاد (ndarray) تحتوي على قيم متباعدة بانتظام ضمن نطاق محدد. على سبيل المثال، لإنشاء قيم من 1 إلى 10، يمكنك استدعاء np.arange() in Python.

بناء الجملة:

numpy.arange(start, stop, step, dtype)

Python معلمات النطاق NumPy:

  • بالبدايةبداية الفترة الزمنية لـ np.arange in Python.
  • قلة النومنهاية الفترة.
  • خطوة: المسافة بين القيم. الخطوة الافتراضية هي 1.
  • نوع: نوع مصفوفة الإخراج لـ NumPy arange.

على سبيل المثال:

import numpy as np
np.arange(1, 11)

الإخراج:

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

على سبيل المثال:

لتغيير الخطوة في NumPy هذا arange على سبيل المثال، أضف رقمًا ثالثًا إلى الأقواس. سيؤدي ذلك إلى تغيير حجم الخطوة.

import numpy as np
np.arange(1, 14, 4)

الإخراج:

array([ 1,  5,  9, 13])

وظيفة NumPy Linspace

linspace تُعيد هذه الدالة عينات متباعدة بالتساوي بين نقطتي النهاية.

بناء الجملة:

numpy.linspace(start, stop, num, endpoint)

هنا،

  • بالبداية: القيمة الابتدائية للمتتالية.
  • قلة النوم: القيمة النهائية للتسلسل.
  • فيعدد العينات المراد توليدها. القيمة الافتراضية هي 50.
  • نقطة النهاية: إذا True (افتراضي)، stop هي القيمة الأخيرة. إذا False, stop غير مرفق.

على سبيل المثال:

على سبيل المثال، يمكن استخدامه لإنشاء 10 قيم متباعدة بالتساوي من 1 إلى 5.

import numpy as np
np.linspace(1.0, 5.0, num=10)

الإخراج:

array([1.        , 1.44444444, 1.88888889, 2.33333333, 2.77777778,       3.22222222, 3.66666667, 4.11111111, 4.55555556, 5.        ])

إذا كنت لا ترغب في تضمين الرقم الأخير في الفاصل الزمني، فقم بتعيين endpoint إلى False.

np.linspace(1.0, 5.0, num=5, endpoint=False)

الإخراج:

array([1. , 1.8, 2.6, 3.4, 4.2])

وظيفة LogSpace NumPy في Python

logspace تُرجع أرقامًا متساوية التباعد على مقياس لوغاريتمي. logspace تشترك في نفس المعايير مثل np.linspace.

بناء الجملة:

numpy.logspace(start, stop, num, endpoint)

على سبيل المثال:

np.logspace(3.0, 4.0, num=4)

الإخراج:

array([ 1000. ,  2154.43469003,  4641.58883361, 10000.        ])

وأخيرًا، إذا كنت ترغب في التحقق من حجم الذاكرة لعنصر واحد في مصفوفة، يمكنك استخدام itemsize.

x = np.array([1,2,3], dtype=np.complex128)
x.itemsize

الإخراج:

16

يأخذ كل عنصر 16 بايت.

الفهرسة والتقطيع Python

يُعدّ تقسيم البيانات أمرًا بسيطًا باستخدام NumPy. سنقوم بتقسيم المصفوفة e. في Python، يمكنك استخدام الأقواس المربعة لإرجاع الصفوف أو الأعمدة.
على سبيل المثال:

## Slice
import numpy as np
e = np.array([(1,2,3), (4,5,6)])
print(e)
[[1 2 3]
 [4 5 6]]

تذكر أن فهرس المصفوفة الأول في NumPy يبدأ من 0.

## First row
print('First row:', e[0])

## Second row
print('Second row:', e[1])

الإخراج:

First row: [1 2 3]
Second row: [4 5 6]

In Pythonكما هو الحال في العديد من اللغات الأخرى،

  • القيمة التي تسبق الفاصلة تمثل عدد الصفوف.
  • القيمة التي تلي الفاصلة تمثل الأعمدة.
  • إذا كنت ترغب في تحديد عمود، فأضف : قبل فهرس العمود.
  • : يعني ذلك أنك تريد جميع الصفوف من العمود المحدد.
print('Second column:', e[:,1])
Second column: [2 5]

لإرجاع أول قيمتين من الصف الثاني، استخدم : لتحديد جميع الأعمدة حتى الفهرس الثاني.

## Second Row, two values
print(e[1, :2])
[4 5]

الوظائف الإحصائية في Python

توفر مكتبة NumPy مجموعة مفيدة من الدوال الإحصائية لإيجاد الحد الأدنى، والحد الأقصى، والنسبة المئوية، والانحراف المعياري، والتباين، وغيرها من البيانات من مصفوفة معينة. فيما يلي قائمة بأكثرها شيوعًا.

يأتي NumPy مزودًا بأدوات إحصائية قوية، ملخصة في الجدول.

الوظيفة نمباي
اقل شئ np.min()
اكثر شئ np.max()
تعني np.mean ()
متوسط np.median()
الانحراف المعياري np.std()

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

على سبيل المثال:

import numpy as np
normal_array = np.random.normal(5, 0.5, 10)
print(normal_array)

الإخراج:

[5.56171852 4.84233558 4.65392767 4.946659   4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]

مثال على الدوال الإحصائية في NumPy

### Min
print(np.min(normal_array))

### Max
print(np.max(normal_array))

### Mean
print(np.mean(normal_array))

### Median
print(np.median(normal_array))

### Sd
print(np.std(normal_array))

الإخراج:

4.467042435266913
5.612113171990201
4.934841002270593
4.846995625786663
0.3875019367395316

ما هو منتج النقطة numpy؟

numpy.dot تُعدّ دالة قوية لحساب المصفوفات. على سبيل المثال، يمكنك حساب الضرب النقطي باستخدام np.dot. numpy.dot يُعيد حاصل الضرب النقطي لـ a و bوتتعامل مع المصفوفات أحادية وثنائية الأبعاد. بالنسبة للمدخلات ثنائية الأبعاد، فإنها تُجري عملية ضرب المصفوفات.

بناء الجملة:

numpy.dot(x, y, out=None)

المعاملات

هنا،

س ، صمصفوفات الإدخال. x و y يجب أن يكون كلاهما أحادي البعد أو ثنائي البعد لـ np.dot() للعمل كضرب نقطي أو ضرب مصفوفات.

خارج: وسيط إخراج اختياري يُستخدم لالتقاط النتيجة. وإلا، فسيتم إرجاع مصفوفة متعددة الأبعاد (ndarray).

سياسات الإرجاع والاستبدال

وظيفة numpy.dot() تُعيد هذه الدالة حاصل الضرب النقطي لمصفوفتين x و yتُرجع هذه الدالة قيمة عددية عندما يكون كلا المصفوفتين أحاديي البعد، وإلا فإنها تُرجع مصفوفة. out يتم إعطاء المصفوفة، ثم يتم إرجاعها.

يثير

الضرب النقطي في Python يثير أ ValueError إذا كان البعد الأخير لـ x لا يتطابق مع البعد قبل الأخير من y.

على سبيل المثال:

## Linear algebra
### Dot product: product of two arrays
f = np.array([1,2])
g = np.array([4,5])
### 1*4+2*5
np.dot(f, g)

الإخراج:

14

ضرب المصفوفات في Python

NumPy matmul() تقوم هذه الدالة بحساب حاصل ضرب مصفوفتين. إليك كيفية عملها.

1) بالنسبة للمصفوفات ثنائية الأبعاد، فإنها تُرجع ناتج ضرب المصفوفة العادي.

2) بالنسبة للأبعاد الأكبر من 2، ي��م التعامل مع المنتج على أنه مجموعة من المصفوفات.

3) يتم أولاً تحويل المصفوفة أحادية البعد إلى مصفوفة، ثم يتم حساب الناتج.

البادئة @ مشغل، متاح منذ Python 3.5 هو اختصار لـ matmul ويستخدم على نطاق واسع في البرمجة الحديثة.

بناء الجملة:

numpy.matmul(x, y, out=None)

هنا،

س ، ص: مصفوفات الإدخال. القيم العددية غير مسموح بها.

خارج: مُعامل اختياري. عادةً ما يتم تخزين الناتج في مصفوفة متعددة الأبعاد (ndarray).

على سبيل المثال:

وبالمثل، يمكنك حساب ضرب المصفوفات باستخدام np.matmul.

### Matmul: matrix product of two arrays
h = [[1,2],[3,4]]
i = [[5,6],[7,8]]
### 1*5+2*7 = 19
np.matmul(h, i)

الإخراج:

array([[19, 22],
            [43, 50]])

مقرر

إذا كنت بحاجة إلى حساب محدد المصفوفة، فاستخدم np.linalg.det()تتولى مكتبة NumPy مسؤولية تحديد الأبعاد نيابةً عنك.

على سبيل المثال:

## Determinant 2*2 matrix
### 5*8-7*6
np.linalg.det(i)

الإخراج:

-2.000000000000005

شر�� البث في NumPy

البث هو القاعدة التي تسمح لـ NumPy بإجراء العمليات الحسابية على مصفوفات ذات أشكال مختلفة دون نسخ البيانات. عند إضافة قيمة عددية إلى متجه أحادي البعد، أو متجه أحادي البعد إلى مصفوفة ثنائية الأبعاد، يقوم NumPy بتمديد المعامل الأصغر على طول المحاور المفقودة بحيث تتطابق الأشكال. هذا يتجنب الحاجة إلى عمليات حسابية صريحة. Python الحلقات هي أحد الأسباب الرئيسية التي تجعل كود NumPy يبدو سريعًا ومختصرًا.

يكون شكلان متوافقين للبث عندما يكون كل زوج من الأبعاد، عند مقارنتهما من اليمين إلى اليسار، إما متساويًا أو يساوي أحدهما 1. على سبيل المثال، مصفوفة من الشكل (3, 4) بث على صف من الأشكال (4,) أو عمود ذو شكل (3, 1)نفس المنطق يدعم عملية التطبيع في التعلم الآلي، حيث تقوم بطرحtracيُظهر الشكل متجه المتوسط ​​لكل ميزة من مجموعة من العينات في سطر واحد. كما أن البث هو النموذج المفاهيمي الذي تستخدمه مكتبات الموترات مثل PyTorch و TensorFlow و JAX، لذا فإن القواعد التي تتعلمها هنا تنتقل مباشرة إلى كود وحدة معالجة الرسومات (GPU).

كيف تدعم NumPy الذكاء الاصطناعي والتعلم الآلي

تُعتبر NumPy أساسًا لكل شيء حديث تقريبًا Python مجموعة أدوات الذكاء الاصطناعي. بايثونTorتُتيح موترات ch، وموترات TensorFlow المُتحمسة، ومصفوفات JAX نفس عمليات البث والتقطيع وإعادة التشكيلping واجهة برمجة التطبيقات التي تعلمتها عن مصفوفات NumPy متعددة الأبعاد. لا تزال العديد من الدروس التعليمية تُدخل مصفوفات NumPy المُعالجة مسبقًا في حلقات تدريب النموذج، وتقبلها الأطر البرمجية دون أي تحويل.

ثلاثة أنماط عملية توضح كيفية ربط NumPy بتطبيقات الذكاء الاصطناعي اليوم. أولًا، يقوم مهندسو البيانات بتحويل البيانات الأولية إلى مصفوفات NumPy قبل إدخالها إلى مسارات scikit-learn أو مجموعات بيانات Hugging Face. ثانيًا، يستخدم الباحثون NumPy كأساس لوحدة المعالجة المركزية، ثم يستبدلونها بـ CuPy، التي توفر واجهة برمجة تطبيقات (API) مطابقة تقريبًا، ولكنها تعمل على وحدات معالجة الرسومات NVIDIA عبر CUDA. ثالثًا، يعتمد JAX على واجهة برمجة تطبيقات NumPy لإضافة التفاضل التلقائي والترجمة الفورية، بحيث يمكن تشغيل نفس الكود الذي يعمل على الحاسوب المحمول على وحدات معالجة Tensor Processing Units (TPUs) في السحابة. الخلاصة هي أن مهارات المصفوفات التي تُكتسب باستخدام NumPy قابلة للتطبيق في جميع أدوات التعلم العميق الرئيسية، مما يجعل هذا الدليل خطوة مفيدة في مسيرة تطوير الذكاء الاصطناعي.

الأسئلة الشائعة

توفر مكتبة NumPy مصفوفات متعددة الأبعاد سريعة، وعمليات حسابية متجهة، وجبر خطي، وأخذ عينات عشوائية، وتحويلات فورييه. يستخدمها المهندسون وعلماء البيانات في الحوسبة العددية، ومعالجة الصور والإشارات، والإحصاء، وكأساس للمصفوفات في مكتبات عالية المستوى مثل pandas وscikit-learn وSciPy.

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

يُحافظ الإصدار 2.0 من NumPy، الذي صدر في يونيو 2024، على استقرار واجهة برمجة تطبيقات المصفوفات الأساسية، ولكنه يُزيل الأسماء المستعارة القديمة مثل np.float و np.intويُشدد قواعد ترقية الأنواع. لا يحتاج معظم كود الإنتاج إلا إلى تعديلات طفيفة. تثبيت numpy<2 إذا لم يتم تحديث أحد المتطلبات بعد.

PyTorتستخدم كل من ch وTensorFlow مصفوفات NumPy متعددة الأبعاد لنمذجة كائنات الموترات. تشتركان في نفس الشكل، والبث، ودلالات التقطيع، وكلاهما يقبل مصفوفات NumPy كمدخلات. تنتقل المهارات المكتسبة باستخدام NumPy مباشرةً إلى بناء الشبكات العصبية، وحلقات التدريب، ومسارات المعالجة المسبقة للموترات.

يعمل NumPy الافتراضي على وحدة المعالجة المركزية (CPU). ولتسريع معالجة الرسومات (GPU)، استخدم CuPy، الذي يُحاكي واجهة برمجة تطبيقات NumPy على أجهزة NVIDIA CUDA، أو JAX، الذي يُضيف خاصية المقارنة التلقائية والترجمة الفورية لوحدات معالجة الرسومات (GPU) ووحدات معالجة Tensor Processing Units (TPU). يُمكّنك كلا الخيارين من إعادة استخدام معظم أكواد NumPy الموجودة مع الحد الأدنى من التعديلات اللازمة لأحمال عمل الذكاء الاصطناعي.

يأتي برنامج Anaconda مزودًا بـ NumPy افتراضيًا. وإلا، فقم بتشغيله. pip install numpy or conda install -c anaconda numpyلترقية تثبيت موجود إلى NumPy 2.x، قم بتشغيل pip install --upgrade numpyتحقق من الإصدار النشط باستخدام print(np.__version__) في الداخل Python.

تتيح خاصية البث في NumPy التعامل مع مصفوفات ذات أشكال مختلفة دون نسخ البيانات. يتم تمديد المصفوفة الأصغر افتراضيًا لتتوافق مع المصفوفة الأكبر عندما تكون الأبعاد متوافقة. وهذا يُسهّل كتابة تعابير موجزة للتطبيع، والتحجيم، وهندسة الميزات في مسارات التعلم الآلي.

تلخيص هذه التدوينة بـ: