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

回答編集履歴

1

追記

2020/04/22 01:39

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -2,4 +2,41 @@
2
2
 
3
3
  numbaは添字アクセスによる計算などnumba向きの処理を記述すると高速になるというもので、普通に書いたpythonコードにはまず効きません。numbaを使うことを前提にぜんぶ組み替えないといけませんし、効率的に最適化するのであればボトルネックを見つけてそこを実装するような形になります。
4
4
 
5
- また、pandasのデータフレームから要素を出し入れしたりする処理は、だいたいどうやっても遅くなります。データフレームを使わないで書くだけでもたぶん数倍くらいは速くなるでしょう。
5
+ また、pandasのデータフレームから要素を出し入れしたりする処理は、だいたいどうやっても遅くなります。データフレームを使わないで書くだけでもたぶん数倍くらいは速くなるでしょう。
6
+
7
+ # 追記
8
+ 愚直にやって0.1秒を切る程度なのですが、これで「遅い」ですか?
9
+
10
+ ```python
11
+ A_data=['tomato','lettuce','carrot']
12
+ B_data=['apple','banana','orange']
13
+ C_data=['milk','coffee','beer']
14
+
15
+ B=[1,2,3]
16
+ C=[3,4,7]
17
+
18
+ A_2=[100,200,300]
19
+ B_2=[10,30,50]
20
+ C_2=[200,500,300]
21
+
22
+ quantities = []
23
+ for b in B:
24
+ for c in C:
25
+ quantities.append([15 - b - c, b, c])
26
+
27
+ idx = []
28
+ for i in range(3):
29
+ for j in range(3):
30
+ for k in range(3):
31
+ idx.append([i, j, k])
32
+
33
+
34
+ result = []
35
+ for ai, bi, ci in idx:
36
+ for aq, bq, cq in quantities:
37
+ result.append(((A_data[ai], B_data[bi], C_data[ci]),
38
+ (aq, bq, cq),
39
+ A_2[ai] * aq + B_2[bi] * bq + C_2[ci] * cq))
40
+ print(result)
41
+
42
+ ```