• 0

كيف أفرز مصفوفة في numpy حسب العمود الوجود فيه في بايثون؟

أريد معرفة كيف يمكنني فرز مصفوفة في numpy حسب عمود معين كما في المثال التالي:

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

لنفترض أنني أريد فرز هذه القوائم حسب العمود الثاني ليكون الناتج كالتالي:

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

فما هي الطريقة الصحيحة لفعل ذلك؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك عدّة طرق لفرز المصفوفات في numpy حسب عمود معين في بايثون، فمثلا يمكننك استخدام دالة view() مع دوال sort وغيرها لترتيب المصفوفة حسب المطلوب كما في المثال التالي:

 In [1]: import numpy as np

In [2]: a = np.array([[1,2,3],[4,5,6],[0,0,1]])

In [3]: np.sort(a.view('i8,i8,i8'), order=['f1'], axis=0).view(np.int)
Out[3]:
array([[0, 0, 1],
       [1, 2, 3],
       [4, 5, 6]])

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

a[a[:,1].argsort()]

ومن الطرق المفيدة أيضا، استخدام دالة sorted() مع جعل المفاتح دالة lambda كما تظهر في المثال التالي:

a = ([[1,2,3],[4,5,6],[0,0,1]]);
a = sorted(a, key=lambda a_entry: a_entry[1])
print a

وسيكون الناتج:

[[[0, 0, 1], [1, 2, 3], [4, 5, 6]]]

المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن