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

回答編集履歴

1

コードミス訂正

2017/12/25 02:05

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -1,3 +1,10 @@
1
+ 訂正:ご指摘によりコードの間違いを訂正しました。
2
+ 誤:`ansr = np.asarray([xn[rd.choice(indices, replace=True)] for y in py])`
3
+ 正:`ansr = np.asarray([xn[rd.choice(indices[y], replace=True)] for y in py])`
4
+ 一応速度を測りなおしたのでそれも反映しました。(割と変動するのであくまで参考値ですが)
5
+ ご指摘ありがとうございました。>mkgreiさん
6
+
7
+ ---
1
8
  素朴な点だけ・・・
2
9
 
3
10
  ループの中で同じ計算を何度も繰り返せば効率は下がるので同一の式をループの外に移動させてはいかがですか?`np.where(tn == y)[0]`は何度も計算する必要はないので外に出せると思います。
@@ -29,7 +36,7 @@
29
36
 
30
37
  def test2():
31
38
  for n in range(1000):
32
- ansr = np.asarray([xn[rd.choice(indices, replace=True)] for y in py])
39
+ ansr = np.asarray([xn[rd.choice(indices[y], replace=True)] for y in py])
33
40
 
34
41
  def sw(f):
35
42
  t1 = time.time()
@@ -42,8 +49,8 @@
42
49
  sw(test2)
43
50
  ```
44
51
  ==>
45
- elapsed: 3.0229055881500244
52
+ elapsed: 3.420769453048706
46
- elapsed: 1.5781912803649902
53
+ elapsed: 0.9050662517547607
47
54
 
48
55
  ---
49
56
  Windows 10, AMD A10-7700K APU 3.4GHz