python中的帧速率函数

2024-06-23 18:55:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望我能从我一直在研究的python代码中得到一些帮助。我要做的是在一个基于python的刺激演示软件上评估任务期间的帧速率。以下是我所拥有的:

frame1 = 0.0152
frame2 = visual.getMsPerFrame(win, nFrames = 60, showVisual=False, msg='', msDelay=0.0)
frame3 = frame2 - frame1

我遇到的问题是“frame2”会产生一组数字。具体来说,它将产生平均值、中位数和标准差。因此,“框架3”将崩溃。有没有办法只从getMsPerFrame()输出中提取平均值,以便“frame3”实际运行?在

我对编程很陌生,所以我对这些东西不太熟悉。在


Tags: 代码false软件速率msgwin平均值visual
1条回答
网友
1楼 · 发布于 2024-06-23 18:55:50

看起来您使用的是psychopy模块,根据它的source code显示{}返回:

return msPFavg, msPFstd, msPFmed #, msdrawAvg, msdrawSD, msfree

散列符号(#)是Python中的注释,因此这意味着返回的值是一个元组。如果返回值为数组,则可以使用与访问所需值相同的方式访问所需值,如下所示:

^{pr2}$

正如您所看到的,这是一个相当糟糕的设计,因为它需要阅读源代码来理解您所追求的数字的含义。我留下原来的答案,以防将来你发现自己也遇到类似的情况。在


如果visual.getMsPerFrame()返回如下Dict:

>>> print(frame2)
{'max': 154, 'avg': 123, 'min': 90}

然后您可以按以下名称访问它的一部分:

>>> print(frame['avg'])
123

如果它返回这样的数组:

>>> print(frame2)
[154, 123, 90]

然后你必须知道哪个元素是平均值。假设第二个元素是这样的(数组是零索引的):

>>> print(frame[1])
123

如果它返回这样的dict数组:

>>> print(frame2)
[{'max': 154}, {'avg': 123}, {'min': 90}]

你可以像这样使用列表理解:

>>> print([item['avg'] for item in frame2 if item.keys()[0] == 'avg'][0])
123

(好吧,这有点傻了,请把print(frames2)的输出贴出来)好的,再来一个(我最近在学习Python的时候很有意思)那么下面的元组列表怎么样:

>>> print(frame2)
[('max', 154), ('avg', 123), ('min', 90)]

这里的列表理解更容易理解:

>>> print([value for key, value in frame2 if key=='avg'][0])
123

相关问题 更多 >

    热门问题