พิจารณารหัสต่อไปนี้:
avgDists = np.array([1, 8, 6, 9, 4])
ids = avgDists.argsort()[:n]
สิ่งนี้ทำให้ฉันมีดัชนีn
องค์ประกอบที่เล็กที่สุด เป็นไปได้ไหมที่จะใช้สิ่งนี้argsort
ตามลำดับจากมากไปน้อยเพื่อให้ได้ดัชนีของn
องค์ประกอบสูงสุด?
[3, 1, 2]
'คำตอบที่ถูกคือ สายของคุณผลิต[2, 1, 3]
(ถ้า n == 3 เป็นตัวอย่าง)
ids = np.array(avgDists).argsort()[-n:][::-1]
กันแล้วทำให้มัน สิ่งที่หลีกเลี่ยงการทำสำเนาของรายการทั้งหมดซึ่งเป็นสิ่งที่คุณได้รับเมื่อคุณเพิ่ม-
ในด้านหน้าของมัน ไม่เกี่ยวข้องกับตัวอย่างเล็ก ๆ ของ OP อาจเป็นกรณีที่มีขนาดใหญ่กว่า
np.array(avgDists).argsort()[::-1][:n]
จะทำมัน นอกจากนี้หากคุณกำลังจะใช้ numpy อยู่ใน numpy ก่อนอื่นแปลงรายการเป็นอาร์เรย์: avgDist=np.array(avgDists)
จากนั้นมันจะกลายเป็นavgDist.argsort()[::-1][:n}
ids = np.array(avgDists).argsort()[-n:]
เหรอ?