pythonで再現性をもたせるためシードを揃えて行をシャッフル
シェルスクリプトでシードも揃えたままシャッフルできたら楽だったのですけど、ちょっとわからなかったのでパイソンで、リストをシードを揃えてシャッフルしてその順番に並べるってコード。
#!/usr/bin/python
# -*- encoding: utf-8 -*-
import numpy as np
import sys
pit = 1 # シードここの値を変える
argvs = sys.argv
argc = len(argvs)
if(argc != 2):
quit()
argvs[1]
def shuf(fn):
fp = open(fn,"r")
fw = open(fn.replace('scale','scale.shuf'),"w")
inline = fp.readlines()#一行ずつ読み込む
las_arr = np.array(range(len(inline)))#行数分リストを作る
len_inline = len(inline)
np.random.seed(pit)
np.random.shuffle(las_arr)#リストをシャッフル
for i in range(0,len_inline):
for j in range(0,len_inline):
if las_arr[i] == j:#リストの順番と揃ったら
fw.write(inline[j-1])
file_name = "filename"+"argvs[1]+".scale"#ファイル名
shuf(file_name)
# -*- encoding: utf-8 -*-
import numpy as np
import sys
pit = 1 # シードここの値を変える
argvs = sys.argv
argc = len(argvs)
if(argc != 2):
quit()
argvs[1]
def shuf(fn):
fp = open(fn,"r")
fw = open(fn.replace('scale','scale.shuf'),"w")
inline = fp.readlines()#一行ずつ読み込む
las_arr = np.array(range(len(inline)))#行数分リストを作る
len_inline = len(inline)
np.random.seed(pit)
np.random.shuffle(las_arr)#リストをシャッフル
for i in range(0,len_inline):
for j in range(0,len_inline):
if las_arr[i] == j:#リストの順番と揃ったら
fw.write(inline[j-1])
file_name = "filename"+"argvs[1]+".scale"#ファイル名
shuf(file_name)