組み合わせはsklearn.utils.extmath.cartesian()
にリストのリストを渡すことで求めることが出来ます。
python
1import pandas as pd
2from sklearn.utils.extmath import cartesian
3
4a = [4, 6, 8]
5b = [4, 6, 8]
6c = [0, 0.8, 1.6]
7d = [3, 4, 6]
8e = [4, 5, 6]
9f = [0.9, 1, 1.1]
10g = [5, 15, 25]
11lst = [a, b, c, d, e, f, g]
12
13df = pd.DataFrame(cartesian(lst), columns=list("ABCDEFG"))
14# A B C D E F G
15# 0 4 4 0 3 4 0 5
16# 1 4 4 0 3 4 0 15
17# 2 4 4 0 3 4 0 25
18# 3 4 4 0 3 4 1 5
19# 4 4 4 0 3 4 1 15
20# ... .. .. .. .. .. .. ..
21# 2182 8 8 1 6 6 1 15
22# 2183 8 8 1 6 6 1 25
23# 2184 8 8 1 6 6 1 5
24# 2185 8 8 1 6 6 1 15
25# 2186 8 8 1 6 6 1 25
itertools.product()
よりも、sklearn.utils.extmath.cartesian()
を用いたほうが高速です。
python
1In [11]: %timeit pd.DataFrame(product(*lst), columns=list("ABCDEFG"))
23.39 ms ± 37.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
3
4In [12]: %timeit pd.DataFrame(cartesian(lst), columns=list("ABCDEFG"))
5344 µs ± 5.08 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/01 07:50
2020/10/01 08:39 編集