回答編集履歴
1
コードミス訂正
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.
|
52
|
+
elapsed: 3.420769453048706
|
46
|
-
elapsed:
|
53
|
+
elapsed: 0.9050662517547607
|
47
54
|
|
48
55
|
---
|
49
56
|
Windows 10, AMD A10-7700K APU 3.4GHz
|