numpyのarray#sortの挙動が想定外だった件
numpyのsortは、特に2次元(以上)の時に「リストのリスト」のような気持ちでsortすると「リストの中の各々のリストがソートされる」という挙動をするのでハマる
>>> x = [[6, 5], [4, 3], [2, 1]]
>>> y = array(x)
>>> x.sort()
>>> x
[[2, 1], [4, 3], [6, 5]]
>>> y.sort()
>>> y
array([[5, 6],
[3, 4],
[1, 2]])numpyのsortは引数に「どの軸についてソートするか」を指定できるが、それを省略した場合のデフォルト値が「-1」つまり「一番内側のリストを個別にソートせよ」相当になっている。普通のリストと同じソートがしたければy.sort(0)する必要がある。
>>> y = array([[6, 5], [4, 3], [2, 1]])
>>> y.sort(0)
>>> y
array([[2, 1],
[4, 3],
[6, 5]])