まぃふぇいばりっと

機械学習やってます.Julia大好きです.勉強したことの殴り書きです.

Python 行列の列をソートする.

ある行に着目して,ソートする方法なんかはぐぐればでてくるんです.これとか

stackoverflow.com

でも,例えば

array([[1, 2, 1],
       [0, 2, 1],
       [0, 0, 0],
       [0, 1, 0],
       [2, 2, 2],
       [2, 1, 0],
       [1, 2, 2],
       [2, 2, 1]])

array([[0, 0, 0],
       [0, 1, 0],
       [0, 2, 1],
       [1, 2, 1],
       [1, 2, 2],
       [2, 1, 0],
       [2, 2, 1],
       [2, 2, 2]])

とするにはどうしたよいだろうか.結構簡単で,こうすればできる.

data = np.array([[1,2,1],
                   [0,2,1],
                   [0,0,0],
                   [0,1,0],
                   [2,2,2],
                   [2,1,0],
                   [1,2,2],
                   [2,2,1]])
sort_keys = tuple(data[:, col] for col in range(data.shape[1]-1, -1, -1))
sort_indices = np.lexsort(sort_keys)
sorted_data = data[sort_indices]