質問編集履歴
4
試したことの追加など
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
### Python 実行速度を高速化し、時間短縮したいです!
|
2
|
-
|
3
|
-
|
4
2
|
|
5
3
|
今の書き方では、何日待っても終わらないため、
|
6
4
|
|
@@ -14,9 +12,9 @@
|
|
14
12
|
|
15
13
|
①(AからN列・1から6362行)のcsvファイルを読み込む
|
16
14
|
|
17
|
-
②CからN列の値を用いて、【Cが〇以下かつDが○以下かつ・・・Nが○○以下】と条件を指定し、その条件を満たすデータのみを抽出する
|
15
|
+
②CからN列の値を用いて、【Cが〇以下かつDが○以下かつ・・・Nが○○以下】と条件を指定し、その条件を満たす行(データ)のみを抽出する
|
18
16
|
|
19
|
-
③抽出したデータにおけるA列の合計値を求める
|
17
|
+
③抽出した行(データ)におけるA列の合計値を求める
|
20
18
|
|
21
19
|
(「〇以下」の〇の値を一つずつ変えて全通りの条件において、A列の合計値を求める)
|
22
20
|
|
@@ -26,19 +24,13 @@
|
|
26
24
|
|
27
25
|
### 発生している問題・エラーメッセージ
|
28
26
|
|
29
|
-
|
30
|
-
|
31
27
|
```
|
32
28
|
|
33
29
|
今の処理を高速化したいです!
|
34
30
|
|
35
31
|
```
|
36
32
|
|
37
|
-
|
38
|
-
|
39
33
|
### 該当のソースコード
|
40
|
-
|
41
|
-
|
42
34
|
|
43
35
|
```Python
|
44
36
|
|
@@ -92,18 +84,14 @@
|
|
92
84
|
|
93
85
|
```
|
94
86
|
|
95
|
-
|
96
|
-
|
97
87
|
### 試したこと
|
98
88
|
|
89
|
+
Cythonを試しましたが、処理速度はnumbaの方が速かったです。
|
99
90
|
|
100
|
-
|
101
|
-
pythonよりも実行速度が速いC++やGoやJavaで実現しようとしましたが、pythonのようなデータフレーム機能が見当たらなかったため実現できませんでした。
|
91
|
+
またpythonよりも実行速度が速いC++やGoやJavaで実現しようとしましたが、pythonのようなデータフレーム機能が見当たらなかったため実現できませんでした。
|
102
92
|
|
103
93
|
|
104
94
|
|
105
95
|
### 補足情報(FW/ツールのバージョンなど)
|
106
96
|
|
107
|
-
|
108
|
-
|
109
97
|
pythonでなくても今と同じ結果が得られるのであれば手段は問いません。pythonでの高速化もしくは他の言語での実現について、ご教授いただけると幸いです。何卒よろしくお願いいたします。
|
3
タグを変更しました!
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
2
ソースコードを変更しました。pandas→numbaに変更することで実行速度が速くなりました!
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,49 +42,53 @@
|
|
42
42
|
|
43
43
|
```Python
|
44
44
|
|
45
|
-
import
|
45
|
+
import numpy
|
46
46
|
|
47
|
-
import numpy as np
|
48
|
-
|
49
|
-
from
|
47
|
+
from numba import jit, prange
|
50
48
|
|
51
49
|
|
52
50
|
|
53
|
-
|
51
|
+
score = numpy.loadtxt('sample.csv', delimiter=',', encoding='utf_8')
|
54
52
|
|
55
53
|
|
56
54
|
|
57
|
-
|
55
|
+
@jit(nopython=True, parallel=True)
|
58
56
|
|
59
|
-
|
57
|
+
def hello():
|
60
58
|
|
61
|
-
|
59
|
+
for c in prange(0, 11):
|
62
60
|
|
63
|
-
|
61
|
+
for d in prange(0, 4):
|
64
62
|
|
65
|
-
|
63
|
+
for e in prange(0, 4):
|
66
64
|
|
67
|
-
|
65
|
+
for f in prange(0, 12):
|
68
66
|
|
69
|
-
|
67
|
+
for g in prange(0, 12):
|
70
68
|
|
71
|
-
|
69
|
+
for h in prange(0, 19):
|
72
70
|
|
73
|
-
|
71
|
+
for i in prange(0, 334):
|
74
72
|
|
75
|
-
|
73
|
+
for j in prange(0, 235):
|
76
74
|
|
77
|
-
|
75
|
+
for k in prange(0, 552):
|
78
76
|
|
79
|
-
|
77
|
+
for l in prange(0, 25):
|
80
78
|
|
81
|
-
|
79
|
+
for m in prange(0, 32):
|
82
80
|
|
83
|
-
|
81
|
+
for n in prange(0, 43):
|
84
82
|
|
85
|
-
|
83
|
+
score1 = score[(score[:, 2] <= c) & (score[:, 3] <= d) & (score[:, 4] <= e) & (score[:, 5] <= f) & (score[:, 6] <= g) & (score[:, 7] <= h) & (score[:, 8] <= i) & (score[:, 9] <= j) & (score[:, 10] <= k) & (score[:, 11] <= l) & (score[:, 12] <= m) & (score[:, 13] <= n)]
|
86
84
|
|
85
|
+
if numpy.sum(score1[:, 0]) > 23:
|
86
|
+
|
87
|
+
score2 = numpy.sum(score1[:, 0])
|
88
|
+
|
87
|
-
print(c, d, e, f, g, h, i, j, k, l, m, n,
|
89
|
+
print(c, d, e, f, g, h, i, j, k, l, m, n, score2)
|
90
|
+
|
91
|
+
hello()
|
88
92
|
|
89
93
|
```
|
90
94
|
|
1
何をやっているか(何を求めたいか)を追加しました!
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,6 +5,22 @@
|
|
5
5
|
今の書き方では、何日待っても終わらないため、
|
6
6
|
|
7
7
|
もっと早く終わるように高速化(最適化)したいです!
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
【追記】
|
12
|
+
|
13
|
+
やっていることは、
|
14
|
+
|
15
|
+
①(AからN列・1から6362行)のcsvファイルを読み込む
|
16
|
+
|
17
|
+
②CからN列の値を用いて、【Cが〇以下かつDが○以下かつ・・・Nが○○以下】と条件を指定し、その条件を満たすデータのみを抽出する
|
18
|
+
|
19
|
+
③抽出したデータにおけるA列の合計値を求める
|
20
|
+
|
21
|
+
(「〇以下」の〇の値を一つずつ変えて全通りの条件において、A列の合計値を求める)
|
22
|
+
|
23
|
+
④Aの合計値が23を超える場合のみ、その条件と値を出力する
|
8
24
|
|
9
25
|
|
10
26
|
|