Pythonでデカルト積(直積)~全通りを書き出す~


はじめに

Pythonでデカルト積(直積)を作成する方法について解説します。

※プログラミング関係の内容を他にも投稿していますので、よろしければこちらの一覧から他の投稿も見て頂けますと幸いです。

まずデカルト積に関してはこちらを参照ください。例えば、以下のように実験をする際にいくつかパラメータがあるとします。

この場合に次のように全ての実験条件を洗い出す際などに使うイメージです。

環境

  • windows10
  • conda 4.10.3
  • python 3.7.10

作成したプログラム

具体的に以下の状況を考えます。この場合は全通りは3×5×3×4×3の540通りです。

# ライブラリーのインポート
import itertools
import numpy as np
import pandas as pd

# 各実験条件の定義
yakuhin = ["A", "B", "C"]
vol = np.arange(10, 60 ,10)
temp = np.arange(80, 140, 20)
speed = np.arange(100, 500 ,100)
time = np.arange(1, 4 ,1)

# デカルト積の定義
all_list = list(itertools.product(yakuhin, vol, temp, speed, time))

# DataFrameに格納
df = pd.DataFrame(all_list)
df.columns = ["薬品", "薬品の量", "反応温度", "撹拌速度", "撹拌時間"]
df.head()

上手く全実験条件がデータフレームに格納できていそうです。念のためデータフレームの大きさを確認しておきます。

# DataFrameの大きさの確認
print("作成した条件の大きさ:"+str(df.shape))
出力
作成した条件の大きさ:(540, 5)

確かに540個分の条件が生成されていることが確認できました。最後にcsv形式で全条件を保存しておきます。

# csvファイルに書き出し
df.to_csv("all_list.csv", encoding ="shift_jis")

まとめ

Pythonでデカルト積(直積)を作成する方法について解説致しました。

参考

  • [Python Snippets](Python Snippets)