اذهب إلى المحتوى

السؤال

نشر

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

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

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

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

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

Recommended Posts

  • 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]]]

المصدر

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...