เชื่อหรือไม่ว่าหลังจากการทำโปรไฟล์รหัสปัจจุบันของฉันการดำเนินการซ้ำ ๆ ของการกลับรายการอาร์เรย์ที่มีจำนวนมากนั้นกินชิ้นใหญ่ของเวลาทำงาน สิ่งที่ฉันมีตอนนี้เป็นวิธีการดูตามปกติ:
reversed_arr = arr[::-1]
มีวิธีอื่นที่จะทำอย่างมีประสิทธิภาพมากขึ้นหรือเป็นเพียงภาพลวงตาจากความหลงใหลของฉันกับการแสดงที่ไม่สมจริง?
arr
เป็นอาร์เรย์ numpy
f2py
เป็นเพื่อนของคุณ! บ่อยครั้งที่การเขียนส่วนที่สำคัญยิ่งของอัลกอริทึม (โดยเฉพาะในการคำนวณทางวิทยาศาสตร์) ในภาษาอื่นและเรียกมันจากงูใหญ่ โชคดี!
arr[::-1]
: github.com/numpy/numpy/blob/master/numpy/lib/twodim_base.py def flipud
ค้นหา ฟังก์ชั่นมีความยาวสี่บรรทัดอย่างแท้จริง
arr[::-1]
แค่ส่งคืนมุมมองที่กลับด้าน มันเร็วเท่าที่คุณจะได้รับและไม่ได้ขึ้นอยู่กับจำนวนของรายการในอาเรย์เพราะมันแค่เปลี่ยนความก้าวหน้า สิ่งที่คุณกำลังย้อนกลับเป็นอาร์เรย์ที่มีค่า