我正在尝试在文件夹中扫描图像的实验。对于每次试验,都会显示一个目标和一些 (7) 干扰图像。之后,在一半的试验中,人们会看到目标图像,而在另一半中,他们会看到之前显示中没有的图像。
我当前的代码有点工作,但前提是试验少于对象:
repeats = 20
# Scan dir for images
jpgs = []
for path, dirs, files in os.walk(directory):
for f in files:
if f.endswith('.jpg'):
jpgs.append(f)
# Shuffle up jpgs
np.random.shuffle(jpgs)
# Create list with target and probe object, Half random, half identical
display = []
question = []
sameobject = []
position = np.repeat([0,1,2,3,4,5,6,7], repeats)
for x in range(1,(repeats*8)+1):
display.append(jpgs[x])
if x % 2 == 0:
question.append(jpgs[-x])
sameobject.append(0)
else:
question.append(jpgs[x])
sameobject.append(1)
# Concatonate objects together
together = np.c_[display,question,position,sameobject]
np.random.shuffle(together)
for x in together:
# Shuffle and set image
np.random.shuffle(jpgs)
myList = [i for i in jpgs if i != together[trial,0]]
myList = [i for i in myList if i != together[trial,1]]
# Set correct image for target
myList[int(together[trial,2])] = together[trial,0]
首先,我知道这是可怕的代码。但它粗略地完成了工作。使用 200 jpg 和 20 重复,它可以工作。如果重复设置为 30,它会崩溃。
这是一个重复太高的例子:
File "H:\Code\Stims\BetaObjectPosition.py", line 214, in <module>
display.append(jpgs[x])
IndexError: list index out of range
有没有办法以允许更多试验的方式更新我的代码,同时在整个实验中尽可能均匀地使用所有对象(一个对象不应显示 3 次而另一个对象显示 0 次)?
如果任何人都可以看到一种明显的方法来平衡 7 个干扰图像的选择方式,则可以加分。
感谢您花时间阅读本文。我希望你能帮助我。