LoginSignup
4
3

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-03-16

はじめに

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

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

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

zikken.png

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

zyoken.png

環境

  • windows10
  • conda 4.10.3
  • python 3.7.10

作成したプログラム

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

zikken2.png

# ライブラリーのインポート
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()

image.png

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

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

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

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

まとめ

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

参考

  • [Python Snippets](Python Snippets)
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3