Numpy sort() argsort()
np.sort(x)
xを昇順でソートしたNumpy配列を返す.
x = np.random.randint(1, 100, size=10) # array([93, 70, 18, 86, 85, 83, 66, 62, 19, 46]) np.sort(x) # array([18, 19, 46, 62, 66, 70, 83, 85, 86, 93])
x.sort()の注意点
x.sort()とすると,対象は破壊的に上書きされてしまうので注意.
x.sort() # 戻り値はNone x # array([18, 19, 46, 62, 66, 70, 83, 85, 86, 93])
np.argsort(x)
xを昇順でソートした際の,インデックスを取得する.
x = np.random.randint(1, 20, size=10) # array([10, 3, 15, 18, 6, 2, 19, 16, 9, 4]) np.argsort(x) # array([5, 1, 9, 4, 8, 0, 2, 7, 3, 6], dtype=int64) # こんな(非効率な)書き方もできる! for i in np.argsort(x): x[i] # 2 # 3 # 4 # 6 # 9 # 10 # 15 # 16 # 18 # 19
x.sort()と異なり,x.argsort()は非破壊で,戻り値はnp.argsort(x)と同様.
tips(降順にしたい)
argsortメソッドにNumpy配列を渡す際,-x(もしくは-1*x)とすることで降順にインデックスを取得できる.
for i in np.argsort(-x): x[i] # 19 # 18 # 16 # 15 # 10 # 9 # 6 # 4 # 3 # 2