Python برنامج NumPy التعليمي للمبتدئين: تعلم باستخدام الأمثلة
ما هو NumPy في Python?
نمباي هي مكتبة مفتوحة المصدر متوفرة في Python، والتي تساعد في البرمجة الرياضية والعلمية والهندسية وعلوم البيانات. وهي مكتبة مفيدة جدًا لإجراء العمليات الحسابية والإحصائية في Python. إنه يعمل بشكل مثالي للمصفوفات متعددة الأبعاد وضرب المصفوفات. من السهل التكامل مع C/C++ Fortran.
بالنسبة لأي مشروع علمي، فإن NumPy هي الأداة التي يجب معرفتها. لقد تم تصميمه للعمل مع المصفوفة ذات الأبعاد N، والجبر الخطي، والرقم العشوائي، وتحويل فورييه، وما إلى ذلك.
NumPy هي لغة برمجة تتعامل مع المصفوفات والمصفوفات متعددة الأبعاد. بالإضافة إلى المصفوفات والمصفوفات، تدعم NumPy عددًا كبيرًا من العمليات الحسابية. في هذا الجزء، سنراجع الوظائف الأساسية التي تحتاج إلى معرفتها للبرنامج التعليمي حول 'TensorFlow".
لماذا نستخدم NumPy؟
NumPy هو كفاءة الذاكرة، مما يعني أنه يمكنه التعامل مع كمية هائلة من البيانات التي يمكن الوصول إليها أكثر من أي مكتبة أخرى. علاوة على ذلك، فإن NumPy مناسب جدًا للعمل معه، خاصة فيما يتعلق بضرب المصفوفات وإعادة تشكيلها. علاوة على ذلك، فإن NumPy سريع. في الواقع، يتعلم TensorFlow وScikit استخدام مصفوفة 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
قم باستيراد NumPy والتحقق من الإصدار
أمر استيراد numpy هو:
import numpy as np
يعيد الكود أعلاه تسمية مساحة الاسم Numpy إلى np. يسمح لنا هذا ببادئة الدالة والأساليب والسمات Numpy بـ "np" بدلاً من كتابة "numpy". هذا هو الاختصار القياسي الذي ستجده في الأدبيات المبتذلة
للتحقق من الإصدار المثبت لديك من NumPy، استخدم الأمر أدناه:
print (np.__version__)
الإخراج:
1.18.0
ما هي تفاصيل Python صفيف NumPy؟
صفائف NumPy تشبه إلى حد ما Python القوائم، ولكن لا تزال مختلفة كثيرا في نفس الوقت. بالنسبة لأولئك منكم الجدد في هذا الموضوع، دعونا نوضح ما هو بالضبط وما فائدته.
نظرًا لأن الاسم يظهر، فإن مصفوفة NumPy هي بنية بيانات مركزية لمكتبة numpy. اسم المكتبة هو في الواقع اختصار لـ "Numeric Python" أو "رقمي Python".
إنشاء مصفوفة NumPy
إن أبسط طريقة لإنشاء مصفوفة في Numpy هي استخدامها Python قائمة
myPythonList = [1,9,8,3]
لتحويل قائمة بايثون إلى مصفوفة 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])
نوت: تنص وثائق Numpy على استخدام np.ndarray لإنشاء مصفوفة. ومع ذلك، هذه هي الطريقة الموصى بها.
يمكنك أيضًا إنشاء مصفوفة numpy من Tuple.
رياضي Operations على صفيف
يمكنك إجراء عمليات حسابية مثل الجمع والطرح والقسمة والضرب على مصفوفة. يتكون بناء الجملة من اسم المصفوفة متبوعًا بالعملية (+.-,*,/) متبوعًا بالمتغير
على سبيل المثال:
numpy_array_from_list + 10
الإخراج:
array([11, 19, 18, 13])
تضيف هذه العملية 10 إلى كل عنصر من عناصر مجموعة numpy.
شكل المصفوفة
يمكنك التحقق من شكل المصفوفة من خلال شكل الكائن المسبوق باسم المصفوفة. بنفس الطريقة، يمكنك التحقق من النوع باستخدام dtypes.
import numpy as np a = np.array([1,2,3]) print(a.shape) print(a.dtype) (3,) int64
العدد الصحيح هو قيمة بدون علامة عشرية. إذا قمت بإنشاء مصفوفة ذات علامة عشرية، فسيتغير النوع إلى عدد عشري.
#### 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)
الهدف | رمز |
---|---|
إنشاء مصفوفة | صفيف([1,2,3]) |
طباعة الشكل | صفيف ([.]).الشكل |
ما هو numpy.zeros()؟
numpy.zeros () أو np.zeros Python يتم استخدام الدالة لإنشاء مصفوفة مليئة بالأصفار. numpy.zeros() في Python يمكن استخدامه عند تهيئة الأوزان أثناء التكرار الأول في TensorFlow والمهام الإحصائية الأخرى.
numpy.zeros() بناء جملة الدالة
numpy.zeros(shape, dtype=float, order='C')
Python numpy.zeros() المعلمات
هنا،
- الشكل : هو شكل المصفوفة الصفرية numpy
- نوع: هو نوع البيانات في الأصفار numpy. إنه اختياري. القيمة الافتراضية هي float64
- الطلب: الافتراضي هو C وهو نمط صف أساسي لـ numpy.zeros() فيه 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() في Python يمكن استخدامه عند تهيئة الأوزان أثناء التكرار الأول في TensorFlow والمهام الإحصائية الأخرى.
Python numpy.ones() بناء الجملة
numpy.ones(shape, dtype=float, order='C')
Python numpy.ones() المعلمات
هنا،
- الشكل : هو شكل np.ones Python مجموعة
- نوع: هو نوع البيانات في تلك numpy. إنه اختياري. القيمة الافتراضية هي 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 تتسطح يتم استخدام الدالة لإرجاع نسخة من المصفوفة ذات بعد واحد. عندما تتعامل مع بعض الشبكات العصبية مثل convnet، فأنت بحاجة إلى تسوية المصفوفة. يمكنك استخدام وظائف 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 في Python مع مثال:
على سبيل المثال:
## Horitzontal 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 nmber from 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]
إذا تم رسم التوزيع فسيكون مشابهًا للرسم البياني التالي
وظيفة NumPy Asarray
يتم استخدام الدالة asarray() عندما تريد تحويل إدخال إلى مصفوفة. يمكن أن يكون الإدخال عبارة عن قوائم أو Tuple أو ndarray وما إلى ذلك.
بناء الجملة:
numpy.asarray(data, dtype=None, order=None)[source]
هنا،
البيانات: البيانات التي تريد تحويلها إلى مصفوفة
dtype: هذا جدل إختياري. إذا لم يتم تحديده، فسيتم استنتاج نوع البيانات من بيانات الإدخال
الطلب: الافتراضي هو C وهو نمط صف أساسي. الخيار الآخر هو F (نمط فورتان)
على سبيل المثال:
ضع في اعتبارك المصفوفة ثنائية الأبعاد التالية التي تحتوي على أربعة صفوف وأربعة أعمدة مملوءة بـ 2
import numpy as np A = np.matrix(np.ones((4,4)))
إذا كنت تريد تغيير قيمة المصفوفة، فلا يمكنك ذلك. والسبب هو أنه لا يمكن تغيير نسخة.
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)
شرح الكود:
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() في Python وظيفة.
بناء الجملة:
numpy.arange(start, stop, step, dtype)
Python معلمات النطاق NumPy:
- إبدأ: بداية الفاصل الزمني لـ np.arange in Python وظيفة.
- قلة النوم: نهاية الفاصل الزمني.
- خطوة: التباعد بين القيم. الخطوة الافتراضية هي 1.
- نوع: هو نوع من إخراج المصفوفة لنطاق NumPy Python.
على سبيل المثال:
import numpy np np.arange(1, 11)
الإخراج:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
على سبيل المثال:
إذا كنت تريد تغيير الخطوة في وظيفة NumPy arange هذه Python على سبيل المثال، يمكنك إضافة رقم ثالث بين قوسين. سوف تغير الخطوة.
import numpy np np.arange(1, 14, 4)
الإخراج:
array([ 1, 5, 9, 13])
وظيفة NumPy Linspace
يعطي Linspace عينات متباعدة بشكل متساو.
بناء الجملة:
numpy.linspace(start, stop, num, endpoint)
هنا،
- إبدأ:قيمة البداية للتسلسل
- قلة النوم: القيمة النهائية للتسلسل
- في: عدد العينات المراد إنشاؤها. الافتراضي هو 50
- نقطة النهاية: إذا كان True (افتراضي)، فإن التوقف هو القيمة الأخيرة. إذا كان خطأ، لا يتم تضمين قيمة التوقف.
على سبيل المثال:
على سبيل المثال، يمكن استخدامه لإنشاء 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. ])
إذا كنت لا تريد تضمين الرقم الأخير في الفاصل الزمني، فيمكنك تعيين نقطة النهاية على خطأ
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. ])
وأخيرًا، إذا كنت تريد التحقق من حجم ذاكرة عنصر ما في المصفوفة، فيمكنك استخدام itemize
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 column print('First row:', e[0]) ## Second col 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() في Python يتعامل مع المصفوفات ثنائية الأبعاد ويقوم بعمليات ضرب المصفوفات.
بناء الجملة:
numpy.dot(x, y, out=None)
المعلمات
هنا،
x، y: صفائف الإدخال. يجب أن يكون كل من x وy 1-D أو 2-D لكي تعمل الدالة np.dot()
خارج:هذه هي وسيطة الإخراج لمصفوفة أحادية الأبعاد التي يجب إرجاعها. وإلا فيجب إرجاع ndarray.
الإسترجاع :
الدالة numpy.dot() في Python تعيد حاصل ضرب نقطي لمصفوفتين x وy. تعيد دالة 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) يتم أولاً ترقية المصفوفة أحادية الأبعاد إلى مصفوفة، ثم يتم حساب المنتج
بناء الجملة:
numpy.matmul(x, y, out=None)
هنا،
x، y: صفائف الإدخال. العددية غير مسموح بها
خارج: هذه معلمة اختيارية. عادةً ما يتم تخزين الإخراج في ndarray
على سبيل المثال:
بنفس الطريقة، يمكنك حساب ضرب المصفوفات باستخدام np.matmul
### Matmul: matruc 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*6np.linalg.det(i)
الإخراج:
-2.000000000000005
الملخص
- Python هي مكتبة مفتوحة المصدر متوفرة في Python، مما يساعد في الرياضيات والعلمية والهندسية و برمجة علوم البيانات.
- numpy.zeros() أو np.zeros Python يتم استخدام الدالة لإنشاء مصفوفة مليئة بالأصفار.
- numpy.ones() في Python يمكن استخدامه عند تهيئة الأوزان أثناء التكرار الأول في TensorFlow والمهام الإحصائية الأخرى.
- Python تُستخدم وظيفة NumPy Reshape لتشكيل مصفوفة دون تغيير بياناتها.
- Python يتم استخدام الدالة NumPy Flatten لإرجاع نسخة من المصفوفة ذات بعد واحد.
- Numpy.hstack هي وظيفة في Python يتم استخدامه لتكديس تسلسلات صفائف الإدخال أفقيًا لإنشاء صفيف واحد.
- Numpy.vstack هي وظيفة في Python والذي يستخدم لتكديس تسلسلات صفائف الإدخال عموديًا لإنشاء صفيف واحد.
- numpy.arange() هي دالة numpy تحمل في ثناياها عوامل تقوم بإرجاع كائن ndarray يحتوي على قيم متباعدة بشكل متساوٍ ضمن فاصل زمني محدد.
- يعد منتج Numpy.dot مكتبة قوية لحساب المصفوفات.
- يتم استخدام الدالة Numpy matmul() لإرجاع منتج المصفوفة المكون من صفيفين.