numpyは特定の列に従ってソートします

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]]

参照リンク:here1here2

おすすめ

転載: blog.csdn.net/qq_26460841/article/details/114582319