NumPy 数组过滤
- หน้าก่อนหน้า NumPy 数组排序
- หน้าต่อไป NumPy 随机
การกรององค์ประกอบ
การเอาองค์ประกอบบางส่วนออกจากองค์ประกอบปัจจุบันและสร้างองค์ประกอบใหม่จากมันเรียกว่าการกรอง (filtering)
ใน 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]
ทำไม?
เพราะเฟซเตอร์ใหม่มีเฟซเตอร์แบบเฟซเตอร์มีค่า True
ของค่า ดังนั้นในกรณีนี้ตำแหน่งที่ 0 และ 2 4
สร้างตัวแปรเฟซเตอร์แบบเฟซเตอร์
ในตัวอย่างที่ผ่านมา เราทำ True
และ False
ค่าถูกเข้ารหัสเป็นค่าตั้งต้น แต่ใช้งานทั่วไปส่วนใหญ่คือสร้างบวกแบบเฟซเตอร์แบบเฟซเตอร์ตามเงื่อนไข
ตัวอย่าง
สร้างตัวตรวจค้นตัวแบบค่าเดี่ยวที่มีเพียงเลขที่มากกว่า 62
import numpy as np arr = np.array([61, 62, 63, 64, 65]) # สร้างตัวแบบค่าเดี่ยวว่าง filter_arr = [] # วนลูปผ่านองค์ประกอบใน arr for element in arr: # ถ้าองค์ประกอบมากกว่า 62 ให้ตั้งค่าค่าเป็น True ถ้าไม่ใช่ให้เป็น False: if element > 62: 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 มีวิธีที่ดีที่จะแก้ปัญหานี้
เราสามารถแทนที่ตัวแบบค่าเดี่ยวในเงื่อนไขด้เลย และมันจะทำงานตามที่เราคาดหวัง
ตัวอย่าง
สร้างตัวตรวจค้นตัวแบบค่าเดี่ยวที่มีเพียงเลขที่มากกว่า 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)
- หน้าก่อนหน้า NumPy 数组排序
- หน้าต่อไป NumPy 随机