อาร์เรย์ตัวกรอง 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
การสร้างอาร์เรย์ตัวกรอง
ในตัวอย่างข้างต้น เราได้ฮาร์ดโค้ด the True
และ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 เป็นวิธีที่ดีในการจัดการกับมัน
เราสามารถแทนที่อาร์เรย์โดยตรงแทนตัวแปร iterable ในเงื่อนไขของเรา และมันจะทำงานได้ตามที่เราคาดหวัง
ตัวอย่าง
สร้างอาร์เรย์ตัวกรองที่จะส่งคืนเฉพาะค่าที่สูงกว่า 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)