logo

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

توفر الوحدة NumPy دالة argsort()‎، التي تُرجع المؤشرات التي من شأنها فرز المصفوفة.

توفر وحدة NumPy وظيفة لإجراء فرز غير مباشر مع المحور المحدد بمساعدة الخوارزمية المحددة بواسطة الكلمة الأساسية. تُرجع هذه الدالة مصفوفة من المؤشرات لها نفس شكل 'a'، والتي من شأنها فرز المصفوفة.

بناء الجملة

 numpy.argsort(a, axis=-1, kind=None, order=None) 

حدود

هذه هي المعلمات التالية في الدالة numpy.argsort():

التراجع عن الالتزام الأخير

ج: array_like

تحدد هذه المعلمة المصفوفة المصدر التي نريد فرزها.

المحور: int أو لا شيء (اختياري)

تحدد هذه المعلمة المحور الذي يتم من خلاله إجراء الفرز. بشكل افتراضي، يكون المحور -1. إذا قمنا بتعيين هذه المعلمة على لا شيء، فسيتم استخدام المصفوفة المسطحة.

النوع: {'فرز سريع'،'دمج فرز'،'فرز كومة'،'مستقر'}(اختياري)

تحدد هذه المعلمة خوارزمية الفرز. بشكل افتراضي، الخوارزمية هي فرز سريع . كلاهما دمج و مستقر يستخدمون فرز الوقت تحت الأغطية. سيختلف التنفيذ الفعلي باختلاف نوع البيانات. ال دمج يتم الاحتفاظ بالخيار للتوافق مع الإصدارات السابقة.

الترتيب: str أو قائمة str (اختياري)

إذا كان 'a' عبارة عن مصفوفة ذات حقول محددة، فإن هذه الوسيطة تحدد الحقول التي سيتم مقارنتها أولاً وثانيًا وما إلى ذلك. ويمكن تحديد الحقل الفردي كسلسلة، ولا يلزم تحديد جميع الحقول. لكن الحقول غير المحددة ستستمر في الاستخدام، بالترتيب الذي تظهر به في dtype، لقطع الروابط.

تقسيم سلسلة C++

العوائد: Index_array: ndarray، int

تقوم هذه الدالة بإرجاع مجموعة من المؤشرات التي تقوم بفرز 'أ' مع المحور المحدد. إذا كان 'a' هو 1-D، فإن a[index_array] ينتج عنه 'a' مرتبة. بشكل عام، np.take_along_axis(arr1, Index_array, axis=axis) يؤدي دائمًا إلى الحصول على 'a' المصنف، بغض النظر عن الأبعاد.

المثال 1: np.argsort()

 import numpy as np a=np.array([456,11,63]) a b=np.argsort(a) b 

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

  • لقد قمنا باستيراد numpy بالاسم المستعار np.
  • لقد أنشأنا مصفوفة 'a' باستخدام الدالة np.array().
  • لقد أعلنا عن المتغير 'b' وقمنا بتعيين القيمة التي تم إرجاعها للدالة np.argsort().
  • لقد مررنا المصفوفة 'أ' في الوظيفة.
  • وأخيرًا، حاولنا طباعة قيمة b.

في الإخراج، تم عرض ndarray الذي يحتوي على المؤشرات (تشير إلى موضع العنصر في المصفوفة التي تم فرزها) وdtype.

انتاج:

 array([456, 11, 63]) array([1, 2, 0], dtype=int64) 

المثال 2: بالنسبة للصفيف ثنائي الأبعاد (الفرز على طول المحور الأول (لأسفل))

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices 

انتاج:

 array([[0, 1], [1, 0]], dtype=int64) 

مثال 3: بالنسبة للصفيف ثنائي الأبعاد (بديل المحور = 0)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices np.take_along_axis(a, indices, axis=0) 

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

  • لقد قمنا باستيراد numpy بالاسم المستعار np.
  • لقد أنشأنا مصفوفة ثنائية الأبعاد 'a' باستخدام وظيفة np.array().
  • لقد أعلنا عن مؤشرات متغيرة وقمنا بتعيين القيمة التي تم إرجاعها للدالة np.argsort().
  • لقد مررنا المصفوفة ثنائية الأبعاد 'a' والمحور كـ 0.
  • بعد ذلك، استخدمنا الدالة take_along_axis() وقمنا بتمرير المصفوفة المصدرية والمؤشرات والمحور.
  • قامت هذه الدالة بإرجاع المصفوفة ثنائية الأبعاد التي تم فرزها.

في الإخراج، تم عرض مصفوفة ثنائية الأبعاد تحتوي على عناصر مرتبة.

كائن جافا

انتاج:

 array([[0, 2], [3, 5]]) 

مثال 4: بالنسبة للصفيف ثنائي الأبعاد (الفرز على طول المحور الأخير (عبر))

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=1) indices 

انتاج:

 array([[0, 1], [1, 0]], dtype=int64) 

مثال 5: بالنسبة للصفيف ثنائي الأبعاد (بديل المحور = 1)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=1) indices np.take_along_axis(a, indices, axis=1) 

انتاج:

 array([[0, 2], [3, 5]]) 

مثال 6: بالنسبة للمصفوفة N-D

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.unravel_index(np.argsort(a, axis=None), a.shape) indices a[indices] # same as np.sort(a, axis=None) 

انتاج:

 (array([0, 1, 1, 0], dtype=int64), array([0, 1, 0, 1], dtype=int64)) array([0, 2, 3, 5]) 

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

  • لقد قمنا باستيراد numpy بالاسم المستعار np.
  • لقد أنشأنا مصفوفة ثنائية الأبعاد 'a' باستخدام وظيفة np.array().
  • لقد أعلنا عن متغير 'المؤشرات' وقمنا بتعيين القيمة التي تم إرجاعها للدالة np.unravel_index().
  • لقد مررنا الدالة np.argsort() وشكل المصفوفة 'a'.
  • لقد مررنا المصفوفة ثنائية الأبعاد 'a' والمحور بالرقم 1 في الدالة argsort().
  • بعد ذلك، حاولنا طباعة قيمة المؤشرات و[indices].

في الإخراج، تم عرض مصفوفة N-D مع العناصر التي تم فرزها.

كات تمبف

مثال 7: الفرز باستخدام المفاتيح

 import numpy as np a= np.array([(0, 5), (3, 2)], dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]) a b="np.argsort(a," order="(&apos;x&apos;,&apos;y&apos;))" c="np.argsort(a," < pre> <p> <strong>Output:</strong> </p> <pre> array([(0, 5), (3, 2)], dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]) array([0, 1], dtype="int64)" array([1, 0], < pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created a 2-D array &apos;a&apos; using np.array() function with dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')].< li> <li>We have declared the variables &apos;b&apos; and &apos;c&apos; and assigned the returned value of np.argsort() function.</li> <li>We have passed the array &apos;a&apos; and order as an argument in the function.</li> <li>Lastly, we tried to print the value of &apos;b&apos; and &apos;c&apos;.</li> </i4'),></li></ul> <p>In the output, a sorted array has been shown with dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]< p> <hr></i4'),></p></i4'),></pre></i4'),>