2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

numpy.argsortの仕様を再整理

Posted at

要約

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

イメージ図

  • まず元のarrayでソート
  • 元のarrayの値がインデックスに変換される
  • 元の値で昇順に並べられたインデックスの完成→このインデックスが出力される
    image.png
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?