English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
استخراج بعض العناصر من مصفوفة مسبقة وتشكيل مصفوفة جديدة منها يُدعى بـ (التصفية).
في 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]
سيقوم المثال السابق بتقديم [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 للعنصر في arr: # إذا كان العنصر أكبر من 62، يتم تعيين القيمة إلى True، وإلا يتم تعيينها إلى False: إذا كان العنصر أكبر من 62: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
نتائج التنفيذ:
[False, False, True, True, True] [63 64 65]
أنشئ مصفوفة مرشحة تتعود فقط على العناصر الزوجية من المصفوفة الأصلية:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) # إنشاء قائمة فارغة filter_arr = [] # تدوير كل عنصر في arr للعنصر في arr: # إذا كان العنصر يمكن أن ينقسم على 2، يتم تعيين القيمة إلى True، وإلا يتم تعيينها إلى False إذا كان العنصر يعادله 2: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
نتائج التنفيذ:
[False, True, False, True, False, True, False] [2 4 6]
السابق هو مهمة شائعة جدًا في 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)
نتائج التنفيذ:
[False False True True True] [63 64 65]
أنشئ مصفوفة مرشحة تتعود فقط على العناصر الزوجية من المصفوفة الأصلية:
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)
نتائج التنفيذ:
[False True False True False True False] [2 4 6]