回答編集履歴

2

2020/05/27 06:14

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
 
47
- ループを消すことで300倍程度高速化できました。
47
+ ループを消すことで300倍程度高速化できました。(ループバージョンと値が一致することは numpy.array_equal() で確認)
48
48
 
49
49
 
50
50
 

1

d

2020/05/27 06:14

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -32,7 +32,9 @@
32
32
 
33
33
  ```python
34
34
 
35
- b, g, r = cv2.split(img)
35
+ b, g, r = cv2.split(img) # チャンネルごとに分割
36
+
37
+
36
38
 
37
39
  img[(0 <= b) & (b < 100), 2] = b[(0 <= b) & (b < 100)]
38
40
 
@@ -53,3 +55,19 @@
53
55
  181 µs ± 140 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
54
56
 
55
57
  ```
58
+
59
+
60
+
61
+ 今回のようなケースでは以下を検討するといいと思います。
62
+
63
+
64
+
65
+ 1. numpy の機能を使えないか検討する
66
+
67
+ 2. numpy で書くことができなくて、ループが発生してしまうのであれば numba で高速化する
68
+
69
+
70
+
71
+ [NumPy配列のブールインデックス参照 | hydroculのメモ](https://hydrocul.github.io/wiki/numpy/ndarray-ref-boolean.html)
72
+
73
+ [Pythonで高速化処理!numbaとCythonの実行速度を比較してみた。 - Np-Urのデータ分析教室](https://www.randpy.tokyo/entry/numba_cython)