我正在使用一个名为psychopy的程序,它是用python编写的,大多数时候它有一个足够的GUI,但是你可以输入你自己的代码部分。基本上我遇到的问题是我有一个 csv 文件,我让 python 导入,在 csv 文件中有六列,使用一些代码我可以让 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:]
然后我将它们随机化,这将为第一个试验块创建两个随机单词列表。
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 的行保持不变,但就像它们是同一列一样随机化,但是,我不想将它们合并到一列,重要的是它们保持单独的列。我也想要 stim2 位置 3 和位置 4。
另外,假设我想从 csv 文件中导入另一列,但不随机化,我将如何将其放入代码中?