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

質問編集履歴

3

解決

2021/11/20 08:31

投稿

shirai
shirai

スコア1290

title CHANGED
File without changes
body CHANGED
@@ -41,4 +41,16 @@
41
41
  ひとまずこれでaからのインデックスの抜き出しはできそうだと考えました。
42
42
  で、この値を元にbにアプローチをかけようとしたのですが、
43
43
  b[c[0]], b[c[1]], b[c[2]]といったやり方で抜き出し自体はできそうだと考えたのですが、
44
- numpyにはより良い書き方があるのではないかと考えて質問に至った次第です。
44
+ numpyにはより良い書き方があるのではないかと考えて質問に至った次第です。
45
+
46
+ # (追記)解決しました
47
+
48
+ ```
49
+ >>> a = np.array([3.0, 4.0, 8.0, 1.0, 6.0, 7.0, 2.0, 5.0])
50
+ >>> b = np.array([5.5, 3.5, 1.5, 6.5, 4.5, 2.5, 8.5, 7.5])
51
+ >>> idx = a.argsort()[::-1][:3]
52
+ >>> np.sum(b.argsort()[idx])
53
+ 4
54
+ ```
55
+
56
+ melianさんありがとうございましたm(_ _)m

2

誤字

2021/11/20 08:31

投稿

shirai
shirai

スコア1290

title CHANGED
File without changes
body CHANGED
@@ -35,7 +35,7 @@
35
35
  # (追記)途中までやったところ
36
36
 
37
37
  ```python
38
- c = np.argsort(a)[::-1][0:2]
38
+ c = np.argsort(a)[::-1][0:3]
39
39
  ```
40
40
 
41
41
  ひとまずこれでaからのインデックスの抜き出しはできそうだと考えました。

1

追記

2021/11/20 07:51

投稿

shirai
shirai

スコア1290

title CHANGED
File without changes
body CHANGED
@@ -30,4 +30,15 @@
30
30
  1は8.0, 7.0, 6.0の順が上位最大3値順に該当するのでそのインデックス順は2, 5, 4
31
31
  2でインデックス順2, 5, 4は1.5, 2.5, 4.5がこの順で該当する
32
32
  なので求めたい配列はnp.array([8.0*1.5, 7.0*2.5, 6.0*4.5])で
33
- np.array([12.0, 17.5, 27.0])となる
33
+ np.array([12.0, 17.5, 27.0])となる
34
+
35
+ # (追記)途中までやったところ
36
+
37
+ ```python
38
+ c = np.argsort(a)[::-1][0:2]
39
+ ```
40
+
41
+ ひとまずこれでaからのインデックスの抜き出しはできそうだと考えました。
42
+ で、この値を元にbにアプローチをかけようとしたのですが、
43
+ b[c[0]], b[c[1]], b[c[2]]といったやり方で抜き出し自体はできそうだと考えたのですが、
44
+ numpyにはより良い書き方があるのではないかと考えて質問に至った次第です。