要約
- numpy.argsortの仕様を勘違いしていたので改めて理解のために記載
- 昇順のインデックスをそのまま返してくれると勘違いしていた
- 実際はオリジナルのarrayベースでソートをしたうえで、その値がもともとどのインデックスだったのかを返してくれる
拝啓
ある実装の対応中、数値の大きい順に計算を行う必要があり、
numpy.argsortを用いて、実現しようと考えたが、アウトプットのイメージが自分のイメージと異なっており、嵌った。調べて理解はしたものの、まだふわっとしているため、図示をして直感的なイメージを持てるようにする。
勘違いしていた仕様
以下のように昇順のインデックスを愚直にreturnしてくれると勘違い
>>> a = np.array([0.8, 0.0, 0.5, 0.7])
>>> a.argsort()
array([3, 0, 1, 2])
実際の仕様
実際には元の値で昇順にソートをしたのち、それがもともとどこのインデックスだったのかを返す
>>> a = np.array([0.8, 0.0, 0.5, 0.7])
>>> a.argsort()
array([1, 2, 3, 0])