I just saw the thread for medians, and it reminded me of a problem that I need to solve. We are writing some Python software for sailing, and we need to detect when we've departed from the median heading on the leg. Calculating arithmetic medians is straightforward, but compass bearings add a twist.
The numerical median of 1, 2, 3, 4, 5, 6, 359 is 4. But for navigational purposes you would actually order the numbers 359, 1, 2, 3, 4, 5, 6, so the desired median heading of the boat is actually 3. Of course, you could express 359 better as -1 degrees to north, then the sequence would be -1, 1, 2, 3, 4, 5, and 6. And you'd be good. But that trick does not generalize if you go south instead, as you have similar issues with -179, 174, 175, 176, 177, 178, and 179. Has anybody solved this in Python, either for compass bearings or a different domain? I can think of kind of a brute force solution where you keep rotating the sequence until the endpoints are closest together mod 360, but I wonder if there is something more elegant. -- http://mail.python.org/mailman/listinfo/python-list