未能在心理上附加变量

问题描述 投票:4回答:1

我正在创建一个概率学习任务。它有一个学习阶段,这是我目前正在准备使用构建器界面与PsychoPy中的自定义代码。学习阶段在称为practice的循环中至少进行了60次试验。

除了用于向参与者提供反馈的正确答案之外,还有三个条件可以决定学习阶段是否可以完成。达到标准后,培训阶段将终止。

我需要附加三个变量并保持分数的计数。我已经创建了3个变量(类似于resp.corr变量),专门为这三个条件计算。代码放在'end routine'部分中,因为在前面的部分中还没有定义resp

结束例程

if (resp.keys == letterA):
    resp1 = 1
else:
    resp1 = 0

if (resp.keys == letterC):
    resp2 = 1
else:
    resp2 = 0

if (resp.keys == letterE):
    resp3 = 1
else:
    resp3 = 0

这工作正常。我将变量resp1,resp2和resp3添加到excel输出。我检查了,他们都是正确计算的。

所以我知道我需要在列表中附加这些变量,并使用以下代码:

结束例程

resplist1.append(resp1)
resplist2.append(resp2)
resplist3.append(resp3)

我还在excel输出中保存了这些列表,以检查它们是否正确计算。我使用了以下代码:

结束例程

practice.addData('resplist1', resplist1)

practice.addData('resplist2', resplist2)

practice.addData('resplist3', resplist3)

不幸的是,replist1,replist2和replist3无法附加列表。而是将resp1,resp2和resp3的值打印在[]中。图片底部:

imageimage.png1635×655 34.1 KB

我还检查了是否有可能计算replist1,replist2和replist3的总和,因为你可以猜测它不起作用。计算值与resp1,resp2和resp3完全相同。

我不确定为什么列表没有正确添加,我将非常感谢所有的帮助!我现在已经被困在这个任务上太久了,我迫不及待地想完成它。

https://i.stack.imgur.com/aXW60.png

python psychopy
1个回答
1
投票

您没有显示如何初始化列表resplist1等。我的猜测是您在“开始例程”选项卡中这样做。这将不断重置它们,以便它们永远不会包含多个值。

如果是这样,请将其初始化转移到“开始实验”选项卡,这样您就不会在每次试验中丢失新附加的值。

当你有一个实际包含多个元素的列表时,最简单的计算方法是将其转换为numpy(导入为np)数组,该数组允许矢量化操作,例如:

sum_1 = np.array(resplist1).sum()
© www.soinside.com 2019 - 2024. All rights reserved.