numpy.lexsort()
複数のシーケンスをソートするために使用されます。スプレッドシートの並べ替えと考えてください。各列はシーケンスを表し、並べ替えの際には下の列が優先されます。
- 元の配列は変更されず、インデックスが返されます。
次のように、最初の列に従って並べ替えます。
import numpy as np
a = [[100, 2, 34], [12, 45, 2], [45, 90, 21]]
a = np.array(a)
b = a[:, 0] # [100 12 45]
index = np.lexsort((b,)) # [1 2 0]
print(a[index])
結果:
[[ 12 45 2]
[ 45 90 21]
[100 2 34]]
次のように、最初の行に従って並べ替えます。
import numpy as np
a = [[100, 2, 34], [12, 45, 2], [45, 90, 21]]
a = np.array(a)
b = a[0, :] # [100 2 34]
index = np.lexsort((b,)) # [1 2 0]
print(a.T[index].T)
結果:
[[ 2 34 100]
[ 45 2 12]
[ 90 21 45]]