質問編集履歴
12
ソース修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
csl = sl[0:i+1]
|
33
33
|
ply = np.where(csl > sl[i])
|
34
34
|
kly = np.size(ply)
|
35
|
-
if kly > 0: msk[ply] =
|
35
|
+
if kly > 0: msk[ply] = 2
|
36
36
|
|
37
37
|
print(msk)
|
38
38
|
print('time : ' + str(round((t.time() - start),3)) + ' [sec]')
|
11
Cythonソース追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
良いアドバイスはありますでしょうか?
|
7
7
|
|
8
8
|
### ソースコード例
|
9
|
-
```
|
9
|
+
```python
|
10
10
|
import numpy as np
|
11
11
|
import time as t
|
12
12
|
|
@@ -42,12 +42,35 @@
|
|
42
42
|
```
|
43
43
|
|
44
44
|
### 試したこと
|
45
|
-
Cythonは試してみましたが殆ど速くなりませんでした。
|
45
|
+
Cythonは試してみましたが殆ど速くなりませんでした(要検証)。
|
46
|
-
for文があるのでおそらく全面的にCで書いても速くならないと考えられます。
|
47
46
|
jitも試しましたが速くなりませんでした。
|
48
47
|
for文を除いてOpenCVで書ければ速くなりそうですが、
|
49
48
|
具体的な記述方法がわからない状況です。
|
50
49
|
|
50
|
+
```Cython
|
51
|
+
import cython
|
52
|
+
import numpy as np
|
53
|
+
cimport numpy as np
|
54
|
+
|
55
|
+
sl = np.random.rand(10000)
|
56
|
+
ang = np.random.rand(10000)
|
57
|
+
|
58
|
+
cdef int n = sl.size
|
59
|
+
cdef np.ndarray msk = np.ones(n)
|
60
|
+
cdef float angmax = ang[0]
|
61
|
+
|
62
|
+
for i in range(1, n):
|
63
|
+
if angmax > ang[i]:
|
64
|
+
msk[i] = 3
|
65
|
+
else:
|
66
|
+
angmax = ang[i]
|
67
|
+
|
68
|
+
csl = sl[0:i+1]
|
69
|
+
ply = np.where(csl > sl[i])
|
70
|
+
kly = np.size(ply)
|
71
|
+
if kly > 0: msk[ply] = 2
|
72
|
+
```
|
73
|
+
|
51
74
|
### 補足情報
|
52
75
|
GPUマシンはありますので、例えばcupyを使用して速くなるのであれば試してみたいです。
|
53
76
|
もしcupyでの記述方法がわかればご教授頂けると幸いです。
|
10
ソース修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -25,14 +25,14 @@
|
|
25
25
|
#angmax = np.max([angmax, ang[i]])
|
26
26
|
#if maxidx == 0: msk[i] = 1
|
27
27
|
if angmax > ang[i]:
|
28
|
-
msk[i] =
|
28
|
+
msk[i] = 3
|
29
29
|
else:
|
30
30
|
angmax = ang[i]
|
31
31
|
|
32
32
|
csl = sl[0:i+1]
|
33
33
|
ply = np.where(csl > sl[i])
|
34
34
|
kly = np.size(ply)
|
35
|
-
if kly > 0: msk[ply] =
|
35
|
+
if kly > 0: msk[ply] = 1
|
36
36
|
|
37
37
|
print(msk)
|
38
38
|
print('time : ' + str(round((t.time() - start),3)) + ' [sec]')
|
9
文章修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
Python3にてプログラムをつくっております。処理高速化を実現したいです。
|
3
3
|
numpyを使用していますが、ループ回数が膨大なので遅いです。
|
4
|
-
下記サンプルコードは、私の環境では0.
|
4
|
+
下記サンプルコードは、私の環境では0.45秒です。
|
5
5
|
これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
|
6
6
|
良いアドバイスはありますでしょうか?
|
7
7
|
|
8
ソース修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -21,10 +21,13 @@
|
|
21
21
|
angmax = ang[0]
|
22
22
|
|
23
23
|
for i in range(1, n):
|
24
|
-
maxidx = np.argmax([angmax, ang[i]])
|
24
|
+
#maxidx = np.argmax([angmax, ang[i]])
|
25
25
|
#angmax = np.max([angmax, ang[i]])
|
26
26
|
#if maxidx == 0: msk[i] = 1
|
27
|
-
if angmax > ang[i]
|
27
|
+
if angmax > ang[i]:
|
28
|
+
msk[i] = 1
|
29
|
+
else:
|
30
|
+
angmax = ang[i]
|
28
31
|
|
29
32
|
csl = sl[0:i+1]
|
30
33
|
ply = np.where(csl > sl[i])
|
7
ソースコード修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
Python3にてプログラムをつくっております。処理高速化を実現したいです。
|
3
3
|
numpyを使用していますが、ループ回数が膨大なので遅いです。
|
4
|
-
下記サンプルコードは、私の環境では0.
|
4
|
+
下記サンプルコードは、私の環境では0.5秒です。
|
5
5
|
これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
|
6
6
|
良いアドバイスはありますでしょうか?
|
7
7
|
|
@@ -22,8 +22,9 @@
|
|
22
22
|
|
23
23
|
for i in range(1, n):
|
24
24
|
maxidx = np.argmax([angmax, ang[i]])
|
25
|
-
angmax = np.max([angmax, ang[i]])
|
25
|
+
#angmax = np.max([angmax, ang[i]])
|
26
|
-
if maxidx == 0: msk[i] = 1
|
26
|
+
#if maxidx == 0: msk[i] = 1
|
27
|
+
if angmax > ang[i] : msk[i] = 1
|
27
28
|
|
28
29
|
csl = sl[0:i+1]
|
29
30
|
ply = np.where(csl > sl[i])
|
6
文章修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -46,5 +46,4 @@
|
|
46
46
|
|
47
47
|
### 補足情報
|
48
48
|
GPUマシンはありますので、例えばcupyを使用して速くなるのであれば試してみたいです。
|
49
|
-
(記述方法がわからず...)
|
50
|
-
|
49
|
+
もしcupyでの記述方法がわかればご教授頂けると幸いです。
|
5
文章修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -46,5 +46,5 @@
|
|
46
46
|
|
47
47
|
### 補足情報
|
48
48
|
GPUマシンはありますので、例えばcupyを使用して速くなるのであれば試してみたいです。
|
49
|
-
(記述
|
49
|
+
(記述方法がわからず...)
|
50
50
|
ただ、個人的にはfor文を使わないOpenCVが最有力候補と考えております。
|
4
文章修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
Python3にてプログラムをつくっております。処理高速化を実現したいです。
|
3
3
|
numpyを使用していますが、ループ回数が膨大なので遅いです。
|
4
|
-
下記
|
4
|
+
下記サンプルコードは、私の環境では0.6秒です。
|
5
5
|
これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
|
6
6
|
良いアドバイスはありますでしょうか?
|
7
7
|
|
3
文章修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
Python3にてプログラムをつくっております。処理高速化を実現したいです。
|
3
3
|
numpyを使用していますが、ループ回数が膨大なので遅いです。
|
4
|
-
下記にサンプル
|
4
|
+
下記にサンプルコードは、私の環境では0.6秒です。
|
5
5
|
これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
|
6
6
|
良いアドバイスはありますでしょうか?
|
7
7
|
|
2
ソースコード修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
良いアドバイスはありますでしょうか?
|
7
7
|
|
8
8
|
### ソースコード例
|
9
|
+
```python3
|
9
10
|
import numpy as np
|
10
11
|
import time as t
|
11
12
|
|
@@ -34,6 +35,7 @@
|
|
34
35
|
|
35
36
|
if __name__ == "__main__":
|
36
37
|
main()
|
38
|
+
```
|
37
39
|
|
38
40
|
### 試したこと
|
39
41
|
Cythonは試してみましたが殆ど速くなりませんでした。
|
1
ソースコード修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,8 +10,8 @@
|
|
10
10
|
import time as t
|
11
11
|
|
12
12
|
start = t.time()
|
13
|
-
sl =
|
13
|
+
sl = np.random.rand(10000)
|
14
|
-
ang =
|
14
|
+
ang = np.random.rand(10000)
|
15
15
|
|
16
16
|
def main():
|
17
17
|
|