質問編集履歴

12

ソース修正

2019/04/10 09:04

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  kly = np.size(ply)
68
68
 
69
- if kly > 0: msk[ply] = 1
69
+ if kly > 0: msk[ply] = 2
70
70
 
71
71
 
72
72
 

11

Cythonソース追加

2019/04/10 09:04

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  ### ソースコード例
16
16
 
17
- ```python3
17
+ ```python
18
18
 
19
19
  import numpy as np
20
20
 
@@ -86,9 +86,7 @@
86
86
 
87
87
  ### 試したこと
88
88
 
89
- Cythonは試してみましたが殆ど速くなりませんでした。
89
+ Cythonは試してみましたが殆ど速くなりませんでした(要検証)
90
-
91
- for文があるのでおそらく全面的にCで書いても速くならないと考えられます。
92
90
 
93
91
  jitも試しましたが速くなりませんでした。
94
92
 
@@ -98,6 +96,54 @@
98
96
 
99
97
 
100
98
 
99
+ ```Cython
100
+
101
+ import cython
102
+
103
+ import numpy as np
104
+
105
+ cimport numpy as np
106
+
107
+
108
+
109
+ sl = np.random.rand(10000)
110
+
111
+ ang = np.random.rand(10000)
112
+
113
+
114
+
115
+ cdef int n = sl.size
116
+
117
+ cdef np.ndarray msk = np.ones(n)
118
+
119
+ cdef float angmax = ang[0]
120
+
121
+
122
+
123
+ for i in range(1, n):
124
+
125
+ if angmax > ang[i]:
126
+
127
+ msk[i] = 3
128
+
129
+ else:
130
+
131
+ angmax = ang[i]
132
+
133
+
134
+
135
+ csl = sl[0:i+1]
136
+
137
+ ply = np.where(csl > sl[i])
138
+
139
+ kly = np.size(ply)
140
+
141
+ if kly > 0: msk[ply] = 2
142
+
143
+ ```
144
+
145
+
146
+
101
147
  ### 補足情報
102
148
 
103
149
  GPUマシンはありますので、例えばcupyを使用して速くなるのであれば試してみたいです。

10

ソース修正

2019/04/10 09:04

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
  if angmax > ang[i]:
54
54
 
55
- msk[i] = 1
55
+ msk[i] = 3
56
56
 
57
57
  else:
58
58
 
@@ -66,7 +66,7 @@
66
66
 
67
67
  kly = np.size(ply)
68
68
 
69
- if kly > 0: msk[ply] = 2
69
+ if kly > 0: msk[ply] = 1
70
70
 
71
71
 
72
72
 

9

文章修正

2019/04/10 08:49

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  numpyを使用していますが、ループ回数が膨大なので遅いです。
6
6
 
7
- 下記サンプルコードは、私の環境では0.5秒です。
7
+ 下記サンプルコードは、私の環境では0.45秒です。
8
8
 
9
9
  これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
10
10
 

8

ソース修正

2019/04/10 08:26

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -44,13 +44,19 @@
44
44
 
45
45
  for i in range(1, n):
46
46
 
47
- maxidx = np.argmax([angmax, ang[i]])
47
+ #maxidx = np.argmax([angmax, ang[i]])
48
48
 
49
49
  #angmax = np.max([angmax, ang[i]])
50
50
 
51
51
  #if maxidx == 0: msk[i] = 1
52
52
 
53
- if angmax > ang[i] : msk[i] = 1
53
+ if angmax > ang[i]:
54
+
55
+ msk[i] = 1
56
+
57
+ else:
58
+
59
+ angmax = ang[i]
54
60
 
55
61
 
56
62
 

7

ソースコード修正

2019/04/10 08:20

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  numpyを使用していますが、ループ回数が膨大なので遅いです。
6
6
 
7
- 下記サンプルコードは、私の環境では0.6秒です。
7
+ 下記サンプルコードは、私の環境では0.5秒です。
8
8
 
9
9
  これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
10
10
 
@@ -46,9 +46,11 @@
46
46
 
47
47
  maxidx = np.argmax([angmax, ang[i]])
48
48
 
49
- angmax = np.max([angmax, ang[i]])
49
+ #angmax = np.max([angmax, ang[i]])
50
50
 
51
- if maxidx == 0: msk[i] = 1
51
+ #if maxidx == 0: msk[i] = 1
52
+
53
+ if angmax > ang[i] : msk[i] = 1
52
54
 
53
55
 
54
56
 

6

文章修正

2019/04/10 08:05

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -94,6 +94,4 @@
94
94
 
95
95
  GPUマシンはありますので、例えばcupyを使用して速くなるのであれば試してみたいです。
96
96
 
97
- (記述方法がわからず...)
98
-
99
- ただ、個人的にはfor文を使わないOpenCV最有力候補考えております。
97
+ もしcupyでの記述方法わかればご教授頂ける幸いです。

5

文章修正

2019/04/10 07:14

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -94,6 +94,6 @@
94
94
 
95
95
  GPUマシンはありますので、例えばcupyを使用して速くなるのであれば試してみたいです。
96
96
 
97
- (記述の仕方がわからず...)
97
+ (記述方がわからず...)
98
98
 
99
99
  ただ、個人的にはfor文を使わないOpenCVが最有力候補と考えております。

4

文章修正

2019/04/10 07:09

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  numpyを使用していますが、ループ回数が膨大なので遅いです。
6
6
 
7
- 下記サンプルコードは、私の環境では0.6秒です。
7
+ 下記サンプルコードは、私の環境では0.6秒です。
8
8
 
9
9
  これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
10
10
 

3

文章修正

2019/04/10 07:06

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  numpyを使用していますが、ループ回数が膨大なので遅いです。
6
6
 
7
- 下記にサンプルのソースコードを記述します。私の環境では0.6秒です。
7
+ 下記にサンプルコードは、私の環境では0.6秒です。
8
8
 
9
9
  これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
10
10
 

2

ソースコード修正

2019/04/10 07:05

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -13,6 +13,8 @@
13
13
 
14
14
 
15
15
  ### ソースコード例
16
+
17
+ ```python3
16
18
 
17
19
  import numpy as np
18
20
 
@@ -70,6 +72,8 @@
70
72
 
71
73
  main()
72
74
 
75
+ ```
76
+
73
77
 
74
78
 
75
79
  ### 試したこと

1

ソースコード修正

2019/04/10 07:04

投稿

dream-20xx
dream-20xx

スコア17

test CHANGED
File without changes
test CHANGED
@@ -22,9 +22,9 @@
22
22
 
23
23
  start = t.time()
24
24
 
25
- sl = arr = np.random.rand(10000)
25
+ sl = np.random.rand(10000)
26
26
 
27
- ang = arr = np.random.rand(10000)
27
+ ang = np.random.rand(10000)
28
28
 
29
29
 
30
30