フォルダ内のファイルを特定の割合に分ける[Python]
なんでこんなことするの?
CNNで学習するために、画像ファイルをTrainingとValidationに分けたかったから。
画像ファイルを7:3に分けるスクリプト
from glob import globfrom os.path import joinimport randomimg_src = "/home/img/"# 指定パスのPNG画像ファイルのリストを取得files = glob(join(img_src, "*.png"))# ファイルの総数を取得num_files = len(files)# ファイルのリストを7:3に分けるfiles30 = random.sample(files, int(num_files*0.3))files70 = random.sample(files, num_files - int(num_files*0.3))ポイント
- random.sample(リストからランダムでn個の要素を取り出す関数)を使ったこと。
- ファイルの抜けが無いように、(num_file*n) : (1 - numfile*n) の割合で分けたこと。