صفيف مرشح NumPy


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

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

في NumPy ، تقوم بتصفية مصفوفة باستخدام قائمة فهرس منطقية .

قائمة الفهرس المنطقي هي قائمة من القيم المنطقية المقابلة للفهارس في المصفوفة.

إذا كانت القيمة في الفهرس هي Trueأن هذا العنصر موجود في المصفوفة التي تمت تصفيتها ، إذا كانت القيمة في هذا الفهرس هي Falseأن هذا العنصر مستبعد من المصفوفة التي تمت تصفيتها.

مثال

قم بإنشاء مصفوفة من العناصر الموجودة في الفهرس 0 و 2:

import numpy as np

arr = np.array([41, 42, 43, 44])

x = [True, False, True, False]

newarr = arr[x]

print(newarr)

سيعود المثال أعلاه [41, 43]، لماذا؟

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


إنشاء مصفوفة عامل التصفية

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

مثال

قم بإنشاء مصفوفة مرشح سترجع فقط القيم الأعلى من 42:

import numpy as np

arr = np.array([41, 42, 43, 44])

# Create an empty list
filter_arr = []

# go through each element in arr
for element in arr:
  # if the element is higher than 42, set the value to True, otherwise False:
  if element > 42:
    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])

# Create an empty list
filter_arr = []

# go through each element in arr
for element in arr:
  # if the element is completely divisble by 2, set the value to True, otherwise 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 طريقة لطيفة لمعالجتها.

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

مثال

قم بإنشاء مصفوفة مرشح سترجع فقط القيم الأعلى من 42:

import numpy as np

arr = np.array([41, 42, 43, 44])

filter_arr = arr > 42

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)