فیلترینگ آرایه در numpy به این معناست که برخی از عناصر موجود در آرایه فعلی را بیرون بکشیم و آرایه جدیدی با استفاده از آن عناصر تشکیل دهیم. برای انجام این کار از آرایهی فیلتر استفاده میکنیم. آرایهی فیلتر، آرایهای از متغیرهای boolean است (متغیرهایی که True یا False هستند). تعداد عناصر موجود در آرایه فیلتر باید برابر تعداد عناصر موجود در آرایه اصلی باشد. وقتی فیلتر را بر روی آرایه اعمال کنیم، تنها عناصری جدا میشوند که اندیس متناظر آنها در فیلتر، مقدار True داشته باشد. برای درک موضوع، به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 |
import numpy as np arr = np.array([41, 42, 43, 44]) x = [True, False, True, False] newarr = arr[x] print(newarr) |
در ادامه با ذکر دو مثال، دو روش کاربردی برای ساخت آرایهی فیلتر را بیان میکنیم:
ساخت آرایه فیلتر با استفاده از حلقهها
فرض کنید بخواهیم عناصر آرایه که بزرگتر از ۴۲ هستند را فیلتر کنیم. به روش ساخت چنین فیلتری در قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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) |
ساخت آرایه فیلتر با استفاده از ویژگیهای آرایهی numpy
با استفاده از امکاناتی که numpy در اختیار ما قرار میدهد، خیلی راحتتر از آن چه در قسمت قبل گفته شد، میتوان یک فیلتر برای جداسازی اعداد بزرگتر از ۴۲ ساخت. به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 |
import numpy as np arr = np.array([41, 42, 43, 44]) filter_arr = arr > 42 newarr = arr[filter_arr] print(filter_arr) print(newarr) |