質問するログイン新規登録

回答編集履歴

1

追記

2021/11/06 13:50

投稿

bsdfan
bsdfan

スコア4947

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  やりたいことは、argsortを二回やればできそうです。
2
- numpyのargsortで、reverseかつstableなのはちょっと面倒そうなので、リストでやってます。
2
+ ~~numpyのargsortで、reverseかつstableなのはちょっと面倒そうなので、リストでやってます。~~
3
3
  (もっといい方法がありそうな気もします)
4
4
 
5
5
  ```python
@@ -14,4 +14,14 @@
14
14
  c = sorted(range(len(b)), key=lambda x: b[x])
15
15
  print(c)
16
16
  #[0, 1, 2]
17
+ ```
18
+
19
+ numpyを使うなら、-1をかけてargsortすれば降順にソートできるので、シンプルに下記にできそうです。
20
+ ```python
21
+ import numpy as np
22
+
23
+ a = np.array([0, 2, 1])
24
+ b = np.argsort(np.argsort(-a, kind='stable'))
25
+ print(b)
26
+ #[2 0 1]
17
27
  ```