فیلتر آرایه‌های NumPy

فیلتر آرایه

گرفتن برخی از عناصر از آرایه موجود و ایجاد آرایه جدید به نام فیلتر (filtering) نامیده می‌شود.

در NumPy، ما از لیست‌های اشاره‌گر بولانی برای فیلتر کردن آرایه‌ها استفاده می‌کنیم.

لیست‌های اشاره‌گر بولانی، لیست‌هایی از مقادیر بولانی هستند که با شمارنده‌های آرایه‌ها مطابقت دارند.

اگر مقدار در شمارنده Trueاگر عنصر، پس آن در آرایه فیلتر شده شامل خواهد بود؛ اگر مقدار در شمارنده Falseاگر عنصر، پس آن از آرایه فیلتر شده حذف خواهد شد.

مثال

یک آرایه با استفاده از عناصر در شمارنده‌های ۰ و ۲، ۴ ایجاد می‌کنیم:

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

اجرای مثال

مثال بالا [۶۱، ۶۳، ۶۵]چرا؟

چون فیلتر جدید تنها شامل مقدارهای آرایه‌های فیلتر است True مقدار را، بنابراین در این حالت، شمارنده‌ها ۰ و ۲، ۴ هستند.

ایجاد آرایه‌های فیلتر

در مثال بالا، ما True و False مقدار به صورت سخت‌کده شده است، اما معمولاً از آن برای ایجاد آرایه‌های فیلتر بر اساس شرط استفاده می‌شود.

مثال

یک آرایه فیلتر ایجاد کنید که فقط عناصر بزرگتر از 62 را برمی‌گرداند:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# یک لیست خالی ایجاد کنید
filter_arr = []
# هر عنصر را در arr مرور کنید
for element in arr:
  # اگر عنصر بیشتر از ۶۲ باشد، مقدار را به True تنظیم می‌کنیم، در غیر این صورت به False:
  اگر عنصر بیشتر از ۶۲ باشد:
    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 راه‌حل خوبی برای این مشکل ارائه می‌دهد.

ما می‌توانیم مستقیماً در شرط آرایه را جایگزین متغیر iterable کنیم و آن به صورت انتظاری عمل خواهد کرد.

مثال

یک آرایه فیلتر ایجاد کنید که فقط عناصر بزرگتر از 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)

اجرای مثال