NumPy ค้นหาอาร์เรย์
ค้นหาอาร์เรย์
คุณสามารถค้นหาค่าบางอย่างในอาร์เรย์ได้ และส่งคืนดัชนีที่ได้รับค่าที่ตรงกัน
หากต้องการค้นหาอาร์เรย์ ให้ใช้where()
วิธีการ
ตัวอย่าง
ค้นหาดัชนีโดยที่ค่าเป็น 4:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x =
np.where(arr == 4)
print(x)
ตัวอย่างข้างต้นจะคืนค่าทูเพิล: (array([3, 5, 6],)
ซึ่งหมายความว่าค่า 4 อยู่ที่ดัชนี 3, 5 และ 6
ตัวอย่าง
ค้นหาดัชนีที่มีค่าเท่ากัน:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 0)
print(x)
ตัวอย่าง
ค้นหาดัชนีที่มีค่าเป็นเลขคี่:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 1)
print(x)
เรียงลำดับการค้นหา
มีวิธีการที่เรียกว่าsearchsorted()
ซึ่งทำการค้นหาแบบไบนารีในอาร์เรย์ และส่งกลับดัชนีที่จะแทรกค่าที่ระบุเพื่อรักษาลำดับการค้นหา
วิธี การsearchsorted()
นี้จะถือว่าใช้กับอาร์เรย์ที่เรียงลำดับ
ตัวอย่าง
ค้นหาดัชนีที่ควรแทรกค่า 7:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7)
print(x)
ตัวอย่างที่อธิบาย: ควรใส่หมายเลข 7 บนดัชนี 1 เพื่อคงลำดับการจัดเรียง
วิธีการเริ่มการค้นหาจากด้านซ้ายและส่งคืนดัชนีแรกที่หมายเลข 7 ไม่เกินค่าถัดไป
ค้นหาจากด้านขวา
โดยค่าเริ่มต้น ดัชนีด้านซ้ายส่วนใหญ่จะถูกส่งคืน แต่เราสามารถให้side='right'
ดัชนีส่วนใหญ่ทางขวากลับแทนได้
ตัวอย่าง
ค้นหาดัชนีที่ควรแทรกค่า 7 โดยเริ่มจากด้านขวา:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7, side='right')
print(x)
ตัวอย่างที่อธิบาย: ควรใส่หมายเลข 7 บนดัชนี 2 เพื่อคงลำดับการจัดเรียง
วิธีการเริ่มการค้นหาจากด้านขวาและส่งคืนดัชนีแรกที่หมายเลข 7 ไม่น้อยกว่าค่าถัดไป
หลายค่า
หากต้องการค้นหามากกว่าหนึ่งค่า ให้ใช้อาร์เรย์ที่มีค่าที่ระบุ
ตัวอย่าง
ค้นหาดัชนีที่ควรแทรกค่า 2, 4 และ 6:
import numpy as np
arr = np.array([1,
3, 5, 7])
x =
np.searchsorted(arr, [2, 4, 6])
print(x)
ค่าที่ส่งคืนคืออาร์เรย์: [1 2 3]
ประกอบด้วยสามดัชนีโดยที่ 2, 4, 6 จะถูกแทรกลงในอาร์เรย์ดั้งเดิมเพื่อรักษาลำดับ