Numpy: วิธีรับดัชนีที่มีค่าเป็นจริง


คุณสามารถใช้วิธีการต่อไปนี้เพื่อรับดัชนีที่เงื่อนไขเป็นจริงใน NumPy:

วิธีที่ 1: รับดัชนีที่มีเงื่อนไขเป็นจริงในอาร์เรย์ NumPy

 #get indices of values greater than 10
n.p. asarray (my_array> 10 ). nonzero ()

วิธีที่ 2: รับดัชนีที่มีเงื่อนไขเป็นจริงในเมทริกซ์ NumPy

 #get indices of values greater than 10
n.p. transpose ((my_matrix>10) .nonzero ())

วิธีที่ 3: รับดัชนีที่มีเงื่อนไขเป็นจริงในแถวใดๆ ของเมทริกซ์ NumPy

 #get indices of rows where any value is greater than 10
n.p. asarray ( np.any (my_matrix> 10 ,axis= 1 )). nonzero ()

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติ

ตัวอย่างที่ 1: รับดัชนีที่มีเงื่อนไขเป็นจริงในอาร์เรย์ NumPy

รหัสต่อไปนี้แสดงวิธีรับดัชนีทั้งหมดของอาร์เรย์ NumPy ที่มีค่ามากกว่า 10:

 import numpy as np

#create NumPy array
my_array = np. array ([2, 2, 4, 5, 7, 9, 11, 12, 3, 19])

#get index of values greater than 10
n.p. asarray (my_array> 10 ). nonzero ()

(array([6, 7, 9], dtype=int32),)

จากผลลัพธ์เราจะเห็นว่าค่าที่ตำแหน่งดัชนี 6 , 7 และ 9 ของอาร์เรย์ NumPy ดั้งเดิมมีค่ามากกว่า 10

ตัวอย่างที่ 2: รับดัชนีที่มีเงื่อนไขเป็นจริงในเมทริกซ์ NumPy

รหัสต่อไปนี้แสดงวิธีรับดัชนีทั้งหมดของเมทริกซ์ NumPy ที่มีค่ามากกว่า 10:

 import numpy as np

#create NumPy matrix
my_matrix = np. array ([[2, 5, 9, 12],
                     [6, 7, 8, 8],
                     [2, 5, 7, 8],
                     [4, 1, 15, 11]])

#get index of values greater than 10
n.p. transpose ((my_matrix> 10 ) .nonzero ())

array([[0, 3],
       [3, 2],
       [3, 3]], dtype=int32)

จากผลลัพธ์เราจะเห็นว่าค่าในตำแหน่งดัชนีต่อไปนี้ของเมทริกซ์มีค่ามากกว่า 10:

  • [0, 3]
  • [3,2]
  • [3, 3]

ตัวอย่างที่ 3: รับดัชนีที่มีเงื่อนไขเป็นจริงในแถวใดๆ ของเมทริกซ์ NumPy

รหัสต่อไปนี้แสดงวิธีรับดัชนีแถวทั้งหมดในเมทริกซ์ NumPy โดยที่ค่ามากกว่า 10 ในองค์ประกอบ ใดๆ ในแถว:

 import numpy as np

#create NumPy matrix
my_matrix = np. array ([[2, 5, 9, 12],
                     [6, 7, 8, 8],
                     [2, 5, 7, 8],
                     [4, 1, 15, 11]])

#get index of rows where any value is greater than 10
n.p. asarray ( np.any (my_matrix> 10 , axis= 1 )). nonzero ()

(array([0, 3], dtype=int32),)

จากผลลัพธ์เราจะเห็นว่าแถวที่ 0 และ 3 มีค่าอย่างน้อยหนึ่งค่าที่มากกว่า 10

หมายเหตุ : หากต้องการรับดัชนีที่มีเงื่อนไขเป็นจริงในคอลัมน์ ให้ใช้ axis=0 แทน

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีทำงานทั่วไปอื่น ๆ ใน NumPy:

วิธีเติมอาร์เรย์ NumPy ด้วยค่า
วิธีลบองค์ประกอบเฉพาะออกจากอาร์เรย์ NumPy
วิธีแทนที่องค์ประกอบในอาร์เรย์ NumPy
วิธีรับแถวเฉพาะจากอาร์เรย์ NumPy

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *