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

回答編集履歴

2

修正

2018/12/07 06:41

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -9,12 +9,12 @@
9
9
  ret = [v[0] for v in B.most_common()] # 要素を要素数順に列挙
10
10
  print(ret) # [7, 1, 4, 2, 3, 5, 6]
11
11
  ```
12
- numpyのみでやるなら以下でできます。ただし同数の順序は不定になるようです(6,5,3,2)
12
+ numpyのみでやるなら以下でできます。ただし同数の順序は出現の逆順になりま(6,5,3,2)
13
13
  参考:[numpyでソート後配列のインデックスを取得](https://www.dogrow.net/python/blog63/)
14
14
  ```Python
15
15
  import numpy as np
16
16
  X = np.array([1,2,3,4,4,4,4,5,6,7,7,7,7,7,7,7,7,7,1,1,1,1])
17
17
  num,cnt = np.unique(X,return_counts=True)
18
- ret = num[np.argsort(cnt)[-1::-1]]
18
+ ret = num[np.argsort(cnt, type='stable')[-1::-1]]
19
19
  print(ret) # [7 1 4 6 5 3 2]
20
20
  ```

1

追加

2018/12/07 06:41

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -8,4 +8,13 @@
8
8
  B = Counter(A)
9
9
  ret = [v[0] for v in B.most_common()] # 要素を要素数順に列挙
10
10
  print(ret) # [7, 1, 4, 2, 3, 5, 6]
11
+ ```
12
+ numpyのみでやるなら以下でできます。ただし同数の順序は不定になるようです(6,5,3,2)
13
+ 参考:[numpyでソート後配列のインデックスを取得](https://www.dogrow.net/python/blog63/)
14
+ ```Python
15
+ import numpy as np
16
+ X = np.array([1,2,3,4,4,4,4,5,6,7,7,7,7,7,7,7,7,7,1,1,1,1])
17
+ num,cnt = np.unique(X,return_counts=True)
18
+ ret = num[np.argsort(cnt)[-1::-1]]
19
+ print(ret) # [7 1 4 6 5 3 2]
11
20
  ```