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