صفيف مرشح 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)