logo

numpy.meshgrid() في بايثون

توفر الوحدة النمطية numpy من Python شبكة شبكية () دالة لإنشاء شبكة مستطيلة بمساعدة المصفوفات ذات البعد الواحد التي تمثل فهرسة المصفوفة أو الفهرسة الديكارتية . MATLAB يلهم إلى حد ما وظيفة Meshgrid (). من المتجهات الإحداثية، تقوم الدالة Meshgrid() بإرجاع المصفوفات الإحداثية.

numpy.meshgrid()

في الشكل أعلاه، يتراوح المحور x من -5 إلى 5، ويتراوح المحور y من -5 إلى 5. لذا، يوجد إجمالي 121 نقطة محددة في الشكل، كل منها بإحداثي x و إحداثي ص. بالنسبة لأي خط موازي للمحور x، فإن إحداثيات x للنقاط المحددة هي -5، -4، -3، -2، -1، 0، 1، 2، 3، 4، و5 على التوالي. من ناحية أخرى، بالنسبة لأي خط موازي للمحور y، فإن إحداثيات y للنقاط المحددة من الأسفل إلى الأعلى هي -5، -4، -3، -2، -1، 0، 1، 2، 3 و 4 و 5 على التوالي.

بناء الجملة

 numpy.meshgrid(*xi, **kwargs) 

حدود

x1, x2,..., xn : array_like

تحدد هذه المعلمة المصفوفة أحادية البعد، التي تمثل إحداثيات الشبكة.

الفهرسة: {'xy', 'ij'}(اختياري)

هذه وسيطة اختيارية تحدد الفهرسة الديكارتية 'xy' (افتراضيًا) أو المصفوفة ('ij') للمخرجات.

متفرق: منطقي (اختياري)

هذه المعلمة اختيارية أيضًا. إذا كنا بحاجة إلى شبكة متفرقة للحفاظ على الذاكرة، علينا تعيين هذه المعلمة على True. افتراضيًا، يتم تعيينه على خطأ.

نسخة: منطقي (اختياري)

الهدف من هذه الوسيطة الاختيارية هو إرجاع نسخة من المصفوفة الأصلية للحفاظ على الذاكرة. افتراضيًا، يتم تعيينه على خطأ.

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

عائدات

X1، X2، ...، Xn

يتم إرجاع طول الإحداثيات من متجه الإحداثيات من هذه الوظيفة.

مثال 1:

 import numpy as np na, nb = (5, 3) a = np.linspace(1, 2, na) b = np.linspace(1, 2, nb) xa, xb = np.meshgrid(a, b) xa xb 

انتاج:

 array([[1. , 1.25, 1.5 , 1.75, 2. ], [1. , 1.25, 1.5 , 1.75, 2. ], [1. , 1.25, 1.5 , 1.75, 2. ]]) array([[1. , 1. , 1. , 1. , 1. ], [1.5, 1.5, 1.5, 1.5, 1.5], [2. , 2. , 2. , 2. , 2. ]]) 

في الكود أعلاه

  • لقد قمنا باستيراد numpy بالاسم المستعار np.
  • لقد أنشأنا متغيرين، أي na وnb، وقمنا بتعيين القيمتين 5 و3 على التوالي.
  • لقد أنشأنا صفيفين، أي a وb باستخدام الدالة linspace().
  • بعد ذلك، قمنا بإعلان المتغيرين 'xa' و'xb' وقمنا بتعيين القيمة التي تم إرجاعها شبكة شبكية ()
  • لقد مررنا المصفوفتين 'a' و'b' في الدالة
  • وأخيرًا، حاولنا طباعة قيمة 'شاه' و 'إكس بي' .

في المخرجات، تم عرض صفيفين يحتويان على طول الإحداثيات من متجهات الإحداثيات.

مثال 2:

 import numpy as np na, nb = (5, 3) a = np.linspace(1, 2, na) b = np.linspace(1, 2, nb) xa, xb = np.meshgrid(a, b, sparse=True) xa xb 

انتاج:

 array([[1. , 1.25, 1.5 , 1.75, 2. ]]) array([[1. ], [1.5], [2. ]]) 

مثال 3:

 import numpy as np import matplotlib.pyplot as plt a = np.arange(-10, 10, 0.1) b = np.arange(-10, 10, 0.1) xa, xb = np.meshgrid(a, b, sparse=True) z = np.sin(xa**2 + xb**2) / (xa**2 + xb**2) h = plt.contourf(a,b,z) plt.show() 

انتاج:

numpy.meshgrid()

في الكود أعلاه

  • لقد قمنا باستيراد numpy بالاسم المستعار np.
  • لقد قمنا باستيراد matplotlib.pyplot كـ plt.
  • لقد أنشأنا مصفوفتين، أي a وb باستخدام الدالة np.arange().
  • بعد ذلك، قمنا بإعلان المتغيرين 'xa' و'xb' وقمنا بتعيين القيمة التي تم إرجاعها شبكة شبكية ()
  • لقد مررنا المصفوفتين 'a' و'b' في الدالة.
  • بعد ذلك، قمنا بإعلان المتغير z وقمنا بتعيين القيمة المرجعة للدالة np.sine().
  • وأخيرًا، حاولنا رسم الخطوط الكنتورية وملء الخطوط باستخدام plt.contourf()

في الإخراج، تم رسم الخطوط الكنتورية.

مثال 4:

 import numpy as np import matplotlib.pyplot as plt a = np.linspace(-5, 5, 5) b = np.linspace(-5, 5, 11) random_data = np.random.random((11, 5)) xa, xb = np.meshgrid(a, b) plt.contourf(xa, xb, random_data, cmap = 'jet') plt.colorbar() plt.show() 

انتاج:

numpy.meshgrid()

مثال 5:

 import numpy as np import matplotlib.pyplot as plt a = np.linspace(-5, 5, 5) b = np.linspace(-5, 5, 11) random_data = np.random.random((11, 5)) xa, xb = np.meshgrid(a, b) sine = (np.sin(xa**2 + xb**2))/(xa**2 + xb**2) plt.contourf(xa, xb, sine, cmap = 'jet') plt.colorbar() plt.show() 

انتاج:

numpy.meshgrid()