回答編集履歴
1
修正
answer
CHANGED
@@ -10,13 +10,13 @@
|
|
10
10
|
a = np.arange(100 * 8 * 20 * 20).reshape(100, 8 * 20 * 20)
|
11
11
|
b = np.arange(100 * 8).reshape(100, 8)
|
12
12
|
|
13
|
-
## 質問
|
13
|
+
## 質問のコード
|
14
14
|
c = np.zeros(100)
|
15
15
|
for i in range(100):
|
16
16
|
for j in range(400):
|
17
17
|
c[i] += np.dot(a[i, 8 * j : 8 * (j + 1)], b[i])
|
18
18
|
|
19
|
-
## 回答の
|
19
|
+
## 回答のコード
|
20
20
|
c2 = (a.reshape(100, -1, 8) * b.reshape(100, 1, 8)).sum(axis=(1, 2))
|
21
21
|
|
22
22
|
# 結果が一致するかどうか
|
@@ -26,6 +26,8 @@
|
|
26
26
|
timeit のベンチマークによると、ループを削除したことにより 300倍ぐらい高速になりました。
|
27
27
|
|
28
28
|
```
|
29
|
+
## 質問のコード
|
29
30
|
143 ms ± 2.65 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
|
31
|
+
## 回答のコード
|
30
32
|
553 µs ± 384 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)
|
31
|
-
``
|
33
|
+
```
|