فرز مجموعات NumPy

تمرير المصفوفة

استخراج بعض العناصر من مصفوفة موجودة لإنشاء مصفوفة جديدة يُسمى التمرير (filtering).

في NumPy، نستخدم قائمة التحقق الحولية لتحديد مصفوفات.

قائمة التحقق الحولية هي قائمة بالقيم الحولية التي تتوافق مع مؤشرات المصفوفة.

إذا كان القيمة في المؤشر Trueسيتم تضمين العنصر في المصفوفة المفترضة؛ إذا كان القيمة في المؤشر Falseسيتم استبعاد العنصر من المصفوفة المفترضة.

مثال

لإنشاء مصفوفة باستخدام العناصر في المؤشرات 0 و2 و4:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
x = [True, False, True, False, True]
newarr = arr[x]
print(newarr)

تشغيل مثال

سيقوم المثال السابق بتحويل [61, 63, 65]لماذا؟

لأن المرشح الجديد يحتوي فقط على القيم في مصفوفة المرشحات True القيمة، لذا في هذه الحالة، فإن المؤشرات هي 0 و2 و4.

إنشاء مصفوفة المرشحات

في المثال السابق، قمنا بإنشاء True و False تم تعيين القيمة بشكل صلب، ولكن الاستخدام العادي هو إنشاء مصفوفة مرشحات بناءً على الشروط.

مثال

أنشئ مصفوفة مرشحة تعود فقط بأعداد أكبر من 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# أنشئ قائمة فارغة
filter_arr = []
# مرور عبر كل عنصر في arr
for element in arr:
  # إذا كان العنصر أكبر من 62، يتم تعيين القيمة إلى True، وإلا يتم تعيينها إلى False:
  إذا كان العنصر أكبر من 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

تشغيل مثال

مثال

أنشئ مصفوفة مرشحة، تعود فقط بأعداد زوجية من المصفوفة الأصلية:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# أنشئ قائمة فارغة
filter_arr = []
# مرور عبر كل عنصر في arr
for element in arr:
  # إذا كان العنصر يمكن أن يتم تقسيمه على 2، يتم تعيين القيمة إلى True، وإلا يتم تعيينها إلى False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

تشغيل مثال

إنشاء مرشح مباشر من المصفوفة

السابق هو مهمة شائعة جدًا في NumPy، يقدم NumPy طريقة جيدة لحل هذه المشكلة.

يمكننا استبدال المصفوفة مباشرة في الشروط بدلاً من المتغير القابل للتشغيل، وسيعمل كما هو متوقع.

مثال

أنشئ مصفوفة مرشحة تعود فقط بأعداد أكبر من 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
filter_arr = arr > 62
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

تشغيل مثال

مثال

أنشئ مصفوفة مرشحة، تعود فقط بأعداد زوجية من المصفوفة الأصلية:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
filter_arr = arr % 2 == 0
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

تشغيل مثال