พิจารณารหัสต่อไปนี้:
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:]เหรอ?