كيفية ترتيب العناصر في مصفوفة numpy (مع أمثلة)


يمكنك استخدام أي من الطرق التالية لحساب ترتيب العناصر في مصفوفة NumPy:

الطريقة الأولى: استخدم argsort() من NumPy

 import numpy as np

ranks = np. array (my_array). argsort (). argsort ()

الطريقة الثانية: استخدام Rankdata () الخاص بـ SciPy

 from scipy. stats import rankdata

ranks = rankdata(my_array)

توضح الأمثلة التالية كيفية استخدام كل طريقة عمليًا مع مصفوفة NumPy التالية:

 import numpy as np

#define array of values
my_array = np. array ([3, 5, 2, 1, 9, 9])

#view array
print (my_array)

[3 5 2 1 9 9]

المثال 1: فرز العناصر في مصفوفة NumPy باستخدام argsort()

يوضح التعليمة البرمجية التالية كيفية استخدام وظيفة argsort() الخاصة بـ NumPy لفرز عناصر المصفوفة:

 #calculate rank of each item in array
ranks = np. array (my_array). argsort (). argsort ()

#view ranks
print (ranks)

[2 3 1 0 4 5]

تظهر النتائج ترتيب كل عنصر في المصفوفة الأصلية، حيث يمثل 0 أقل قيمة.

ميزة هذا الأسلوب هي أنك لا تحتاج إلى تحميل أي وحدات إضافية، ولكن العيب هو أن argsort() لديه طريقة واحدة فقط للتعامل مع الروابط.

افتراضيًا، يستخدم argsort() طريقة ترتيبية للتعامل مع الروابط، مما يعني أن القيمة المرتبطة التي تظهر أولاً يتم منحها تلقائيًا مرتبة أقل.

مثال 2: ترتيب العناصر في مصفوفة NumPy باستخدام Rankdata()

يوضح التعليمة البرمجية التالية كيفية استخدام وظيفة Rankdata() في SciPy لترتيب عناصر المصفوفة:

 from scipy. stats import rankdata

#calculate rank of each item in array
ranks = rankdata(my_array)

#view ranks
print (ranks)

array([3. , 4. , 2. , 1. , 5.5, 5.5])

تظهر النتائج ترتيب كل عنصر في المصفوفة الأصلية، حيث يمثل الرقم 1 أصغر قيمة.

إذا كنت تريد أن يمثل 0 أصغر قيمة، فما عليك سوى طرح 1 من كل قيمة:

 from scipy. stats import rankdata

#calculate rank of each item in array
ranks = rankdata(my_array) - 1

#view ranks
print (ranks)

[2. 3. 1. 0. 4.5 4.5]

افتراضيًا، تقوم الدالة Rankdata() بتعيين متوسط الرتب لجميع القيم المرتبطة.

ومع ذلك، يمكنك استخدام وسيطة الطريقة للتعامل مع الروابط بطريقة مختلفة.

على سبيل المثال، يوضح التعليمة البرمجية التالية كيفية استخدام الترتيبي كطريقة لإدارة الارتباط:

 from scipy. stats import rankdata

#calculate rank of each item in array
ranks = rankdata(my_array, method=' ordinal ') - 1

#view ranks
print (ranks)

[2 3 1 0 4 5]

يؤدي هذا إلى نفس النتائج التي تنتجها طريقة argsort() الخاصة بـ NumPy.

تتضمن أساليب إدارة الارتباط الأخرى الحد الأدنى والحد الأقصى والكثيف .

تعرف على كل طريقة في وثائق SciPy .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في NumPy:

كيفية إزالة العناصر المكررة من مجموعة NumPy
كيفية تحويل مجموعة NumPy من العوامات إلى أعداد صحيحة
كيفية تحويل مصفوفة NumPy إلى مصفوفة

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *