teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

12

ソース修正

2019/04/10 09:04

投稿

dream-20xx
dream-20xx

スコア17

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] = 1
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ソース追加

2019/04/10 09:04

投稿

dream-20xx
dream-20xx

スコア17

title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,7 @@
6
6
  良いアドバイスはありますでしょうか?
7
7
 
8
8
  ### ソースコード例
9
- ```python3
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

ソース修正

2019/04/10 09:04

投稿

dream-20xx
dream-20xx

スコア17

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] = 1
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] = 2
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

文章修正

2019/04/10 08:49

投稿

dream-20xx
dream-20xx

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
  Python3にてプログラムをつくっております。処理高速化を実現したいです。
3
3
  numpyを使用していますが、ループ回数が膨大なので遅いです。
4
- 下記サンプルコードは、私の環境では0.5秒です。
4
+ 下記サンプルコードは、私の環境では0.45秒です。
5
5
  これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
6
6
  良いアドバイスはありますでしょうか?
7
7
 

8

ソース修正

2019/04/10 08:26

投稿

dream-20xx
dream-20xx

スコア17

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] : msk[i] = 1
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

ソースコード修正

2019/04/10 08:20

投稿

dream-20xx
dream-20xx

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
  Python3にてプログラムをつくっております。処理高速化を実現したいです。
3
3
  numpyを使用していますが、ループ回数が膨大なので遅いです。
4
- 下記サンプルコードは、私の環境では0.6秒です。
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

文章修正

2019/04/10 08:05

投稿

dream-20xx
dream-20xx

スコア17

title CHANGED
File without changes
body CHANGED
@@ -46,5 +46,4 @@
46
46
 
47
47
  ### 補足情報
48
48
  GPUマシンはありますので、例えばcupyを使用して速くなるのであれば試してみたいです。
49
- (記述方法がわからず...)
50
- ただ、個人的にはfor文を使わないOpenCV最有力候補考えております。
49
+ もしcupyでの記述方法わかればご教授頂ける幸いです。

5

文章修正

2019/04/10 07:14

投稿

dream-20xx
dream-20xx

スコア17

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

文章修正

2019/04/10 07:09

投稿

dream-20xx
dream-20xx

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
  Python3にてプログラムをつくっております。処理高速化を実現したいです。
3
3
  numpyを使用していますが、ループ回数が膨大なので遅いです。
4
- 下記サンプルコードは、私の環境では0.6秒です。
4
+ 下記サンプルコードは、私の環境では0.6秒です。
5
5
  これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
6
6
  良いアドバイスはありますでしょうか?
7
7
 

3

文章修正

2019/04/10 07:06

投稿

dream-20xx
dream-20xx

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
  Python3にてプログラムをつくっております。処理高速化を実現したいです。
3
3
  numpyを使用していますが、ループ回数が膨大なので遅いです。
4
- 下記にサンプルのソースコードを記述します。私の環境では0.6秒です。
4
+ 下記にサンプルコードは、私の環境では0.6秒です。
5
5
  これでも十分速いのかもしれませんが、あと10倍以上は速くしたいです。
6
6
  良いアドバイスはありますでしょうか?
7
7
 

2

ソースコード修正

2019/04/10 07:05

投稿

dream-20xx
dream-20xx

スコア17

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

ソースコード修正

2019/04/10 07:04

投稿

dream-20xx
dream-20xx

スコア17

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 = arr = np.random.rand(10000)
13
+ sl = np.random.rand(10000)
14
- ang = arr = np.random.rand(10000)
14
+ ang = np.random.rand(10000)
15
15
 
16
16
  def main():
17
17