私はpythonで書かれたpsychopyと呼ばれるプログラムを使用しています。ほとんどの場合、十分なGUIを備えていますが、独自のコードセクションを入力できます。基本的に私が抱えている問題は、Pythonにインポートするcsvファイルがあることです。csvファイルには6つの列があり、少しのコードでpythonを取得して各列の順序をランダム化できます。
import random
import csv
stimulilist=list(csv.reader(open('original_file.csv',"rU")))
stimuliones=[]
locationones=[]
locationtwos=[]
stimulitwos=[]
locationthrees[]
locationfours[]
for i in range(len(stimulilist)):
stimuliones.append(stimulilist[i][0])
locationones.append(stimulilist[i][1])
locationtwos.append(stimulilist[i][2])
stimulitwos.append(stimulilist[i][3])
locationthrees.append(stimulilist[i][4])
locationfours.append(stimulilist[i][5])
Stim1=stimuliones[1:]
location1=locationones[1:]
location2=locationtwos[1:]
Stim2=stimuliones[1:]
location3=locationthrees[1:]
location4=positionfours[1:]
次に、それらをランダム化します。これにより、試行の最初のブロック用に 2 つのランダム化された単語リストが作成されます。
Stimuli1Random=random.sample(Stim1,len(Stim1))
Location1Random=random.sample(location1,len(location1))
Location2Random=random.sample(location2,len(location2))
Stimuli2Random=random.sample(Stim2,len(Stim2))
Location3random=random.sample(location3,len(location3))
Location4random=random.sample(location4,len(location4))
ただし、刺激 1、場所 1、および場所 2 を一緒にランダム化し、刺激 2、場所 3、および場所 4 を一緒にランダム化する必要があります。たとえば、次のようになります。
CSV ファイルでの表示方法:
(row) Stim1 Location1 Location2 (row) Stim2 Location3 Location4
1 P1 Left Left 1 c1 Left Left
2 p2 Middle Middle 2 c2 Middle Middle
3 p3 Right Right 3 c3 Right Right
4 p4 Left Left 4 c4 Left Left
5 p5 Middle Middle 5 c5 Middle Middle
6 p6 Right Right 6 c6 Right Right
上記のコードでは、各列が個別にランダム化されます。例:
(row) Stim1 Location1 Location2 (row) Stim2 Location3 Location4
1 P6 Left Middle 1 c5 Right Left
2 p1 Right Middle 2 c3 Middle Middle
3 p5 Middle Right 3 c1 Left Middle
4 p4 Left Left 4 c2 Right Left
5 p3 Middle Left 5 c4 Middle Right
6 p2 Right Right 6 c6 Left Right
しかし、次のように行をランダム化する必要があります。
(row) Stim1 Location1 Location2 (row) Stim2 Location3 Location4
1 p2 Middle Middle 1 c3 Right Right
2 p6 Right Right 2 c5 Middle Middle
3 p3 Right Right 3 c4 Left Left
4 p4 Left Left 4 c1 Left Left
5 p5 Middle Middle 5 c2 Middle Middle
6 P1 Left Left 6 c6 Right Right
したがって、基本的に、Stim1、Location 1、および Location 2 の行は同じままで、同じ列であるかのようにランダム化されますが、それらを 1 つの列にマージしたくありません。個々の列のままであることが重要です。stim2 の場所 3 と場所 4 にもこれが必要です。
さらに、csv ファイルから別の列をインポートしたいが、それをランダム化したくない場合、どのようにコードに入れますか?