回答編集履歴
1
改善
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
下記でinteg_gaussian()の速度を改善できそうです。
|
2
2
|
- func_gauss は、毎回作り直す必要はないので、関数の外で作成
|
3
3
|
- func_gauss は ufunc になっている(はずな)ので、forは使わず、引数にarrayを渡して計算
|
4
|
-
- 二重のforループを
|
4
|
+
- 二重のforループはブロードキャストを使った演算により削除
|
5
5
|
|
6
6
|
一番上の、sympyの部分を関数の外に出す変更だけでも、かなり変わります。
|
7
7
|
|
@@ -32,7 +32,6 @@
|
|
32
32
|
x_list = func_gauss((x_range - cen_x) / sigma)
|
33
33
|
y_list = func_gauss((y_range - cen_y) / sigma)
|
34
34
|
#不定積分に積分したい範囲を代入して積分値を求める
|
35
|
-
y_diff, x_diff = np.meshgrid(np.diff(y_list), np.diff(x_list))
|
36
|
-
np_integ = (height *
|
35
|
+
np_integ = (height * np.diff(x_list)[:, None] * np.diff(y_list) + constant).ravel()
|
37
36
|
return np_integ
|
38
37
|
```
|