質問編集履歴
1
コードを文字で説明しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,6 +12,8 @@
|
|
12
12
|
|
13
13
|
素人なりになんとかコード作成することができました。高速化を可能にしたいとnumbaを用いてみましたがうまくいきません。
|
14
14
|
|
15
|
+
numba以外の方法での高速化でもかまいません。
|
16
|
+
|
15
17
|
ご教授頂きたくよろしくお願いいたします。
|
16
18
|
|
17
19
|
|
@@ -80,17 +82,41 @@
|
|
80
82
|
|
81
83
|
```ここに言語名を入力
|
82
84
|
|
83
|
-
|
85
|
+
|
84
|
-
|
85
|
-
|
86
|
+
|
86
|
-
|
87
|
-
def kumiawase_numba():
|
88
|
-
|
89
|
-
|
87
|
+
〈行いたいこと〉
|
88
|
+
|
90
|
-
|
89
|
+
組み合わせたいデータはexcel表に記載し、pythonを動かすことで結果表が得られるようなシステムを作成したい。
|
90
|
+
|
91
|
+
|
92
|
+
|
91
|
-
|
93
|
+
野菜と果物と飲み物の組み合わせを作成。購入個数の組み合わせも作成。それの掛け合わせたものの合計金額を出したい。
|
94
|
+
|
95
|
+
|
96
|
+
|
92
|
-
|
97
|
+
1. 3つのカテゴリーの品物掛け合わせを作成。
|
98
|
+
|
93
|
-
|
99
|
+
A_data,B_data,C_data=[tomato,apple,milk],[tomato,apple,coffee]・・・・ 全27通り
|
100
|
+
|
101
|
+
2. 3つのカテゴリーの個数の組み合わせを作成(B,Cの個数候補はあり、全部たして15になるようにAを変動)
|
102
|
+
|
103
|
+
A,B,C=[11,1,3],[10,1,4]・・・・・・・全9通り
|
104
|
+
|
105
|
+
3. 品物と個数を組み合わせを作成
|
106
|
+
|
107
|
+
[tomato:11個,apple:1個,milk:3個], [tomato:10個,apple:1個,milk:4個],・・・・・・・全243通り(27×9)
|
108
|
+
|
109
|
+
4. それぞれの金額から、合計金額を算出して一覧表を作成したい。
|
110
|
+
|
111
|
+
[tomato:11個,apple:1個,milk:3個]=2800円, [tomato:10個,apple:1個,milk:4個]=2810円,・・・・・・・全243通り
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
以下、作成したコードになります。
|
94
120
|
|
95
121
|
#〈組み合わせたいデータ〉
|
96
122
|
|
@@ -130,25 +156,25 @@
|
|
130
156
|
|
131
157
|
# 〈求めたいもの〉品物の組み合わせと購入個数の組み合わせと合計金額
|
132
158
|
|
133
|
-
item_kumiawase_list=list()
|
159
|
+
item_kumiawase_list=list() 最終に得たい表の品物の組み合わせ部分
|
134
|
-
|
160
|
+
|
135
|
-
quantity_kumiawase_list=list()
|
161
|
+
quantity_kumiawase_list=list() 最終に得たい表の個数の組み合わせ部分
|
136
|
-
|
162
|
+
|
137
|
-
allcost_list=list()
|
163
|
+
allcost_list=list() 合計金額
|
138
|
-
|
139
|
-
|
140
|
-
|
164
|
+
|
165
|
+
|
166
|
+
|
141
|
-
if X==10:
|
167
|
+
if X==10: ※個数の組み合わせを実施
|
142
|
-
|
168
|
+
|
143
|
-
|
169
|
+
quantity_list=list(itertools.product(B,C)) BとCの組み合わせを実施
|
144
|
-
|
170
|
+
|
145
|
-
df_quantity_list= pd.DataFrame(quantity_list,columns=['b', 'c'])
|
171
|
+
df_quantity_list= pd.DataFrame(quantity_list,columns=['b', 'c']) BとCの組み合わせを表に変換
|
146
|
-
|
172
|
+
|
147
|
-
|
173
|
+
Q=df_quantity_list.sum(axis=1) 15-(B+C)よりAの個数を追加
|
148
174
|
|
149
175
|
df_quantity_list["total"]=Q
|
150
176
|
|
151
|
-
P=5
|
177
|
+
P=15-Q
|
152
178
|
|
153
179
|
df_quantity_list["a"]=P
|
154
180
|
|
@@ -158,7 +184,7 @@
|
|
158
184
|
|
159
185
|
|
160
186
|
|
161
|
-
item_list=list(itertools.product(A_data, B_data,C_data))
|
187
|
+
item_list=list(itertools.product(A_data, B_data,C_data)) ※品物の組み合わせを実施→表に変換
|
162
188
|
|
163
189
|
df_item_list= pd.DataFrame(item_list)
|
164
190
|
|
@@ -166,7 +192,7 @@
|
|
166
192
|
|
167
193
|
|
168
194
|
|
169
|
-
cost_list=list(itertools.product(A_2,B_2,C_2))
|
195
|
+
cost_list=list(itertools.product(A_2,B_2,C_2)) ※コストの組み合わせを実施→表に変換
|
170
196
|
|
171
197
|
df_cost_list= pd.DataFrame(cost_list)
|
172
198
|
|
@@ -174,49 +200,47 @@
|
|
174
200
|
|
175
201
|
|
176
202
|
|
177
|
-
df_quantity_list_number=len(df_quantity_list)
|
203
|
+
df_quantity_list_number=len(df_quantity_list) ※個数の組み合わせ表を上から番号指定できるよう番号を入手
|
178
|
-
|
204
|
+
|
179
|
-
df_quantity_list_number_bangou=np.arange(0,df_quantity_list_number,1)
|
205
|
+
df_quantity_list_number_bangou=np.arange(0,df_quantity_list_number,1)
|
180
|
-
|
181
|
-
|
182
|
-
|
206
|
+
|
207
|
+
|
208
|
+
|
183
|
-
df_cost_list_number=len(df_cost_list)
|
209
|
+
df_cost_list_number=len(df_cost_list) ※コストの組み合わせ表を上から番号指定できるよう番号を入手
|
184
210
|
|
185
211
|
df_cost_list_number_bangou=np.arange(0,df_cost_list_number,1)
|
186
212
|
|
187
213
|
|
188
214
|
|
189
|
-
for Df_cost_list_number_bangou in df_cost_list_number_bangou:
|
215
|
+
for Df_cost_list_number_bangou in df_cost_list_number_bangou:
|
190
|
-
|
216
|
+
|
191
|
-
cost_select=df_cost_list.iloc[Df_cost_list_number_bangou,:]
|
217
|
+
cost_select=df_cost_list.iloc[Df_cost_list_number_bangou,:] ※コスト組み合わせ表のデータを上から順に指定。
|
192
|
-
|
218
|
+
|
193
|
-
a_cost=cost_select[0]
|
219
|
+
a_cost=cost_select[0] Aのコスト
|
194
|
-
|
220
|
+
|
195
|
-
b_cost=cost_select[1]
|
221
|
+
b_cost=cost_select[1] Bのコスト
|
196
|
-
|
222
|
+
|
197
|
-
c_cost=cost_select[2]
|
223
|
+
c_cost=cost_select[2] Cのコスト
|
198
|
-
|
224
|
+
|
199
|
-
|
225
|
+
item_select=df_item_list.iloc[Df_cost_list_number_bangou,:] ※品物の組み合わせ表のデータを上から順に指定。
|
200
226
|
|
201
227
|
for Df_quantity_list_number_bangou in df_quantity_list_number_bangou:
|
202
228
|
|
203
|
-
item_kumiawase_list.append(item_select)
|
229
|
+
item_kumiawase_list.append(item_select) ※品物の組み合わせリストを記載
|
204
|
-
|
230
|
+
|
205
|
-
quantity_select=df_quantity_list.iloc[Df_quantity_list_number_bangou,:]
|
231
|
+
quantity_select=df_quantity_list.iloc[Df_quantity_list_number_bangou,:] ※個数組み合わせ表のデータを上から順に指定。
|
206
|
-
|
207
|
-
|
232
|
+
|
208
|
-
|
209
|
-
quantity_kumiawase_list.append(quantity_select2)
|
233
|
+
quantity_kumiawase_list.append(quantity_select2) ※個数組み合わせリストを記載
|
210
|
-
|
234
|
+
|
211
|
-
a_quantity=quantity_select[0]
|
235
|
+
a_quantity=quantity_select[0] Aの個数
|
212
|
-
|
236
|
+
|
213
|
-
b_quantity=quantity_select[1]
|
237
|
+
b_quantity=quantity_select[1] Bの個数
|
214
|
-
|
238
|
+
|
215
|
-
c_quantity=quantity_select[2]
|
239
|
+
c_quantity=quantity_select[2] Cの個数
|
216
|
-
|
240
|
+
|
217
|
-
allcost= a_cost*a_quantity+b_cost*b_quantity+c_cost*c_quantity
|
241
|
+
allcost= a_cost*a_quantity+b_cost*b_quantity+c_cost*c_quantity ※合計金額計算
|
218
|
-
|
242
|
+
|
219
|
-
allcost_list.append(allcost)
|
243
|
+
allcost_list.append(allcost) ※合計金額をリストに記載
|
220
244
|
|
221
245
|
|
222
246
|
|