簡體   English   中英

python中的幀率函數

[英]Frame rate functions in python

我希望我可以在我一直在努力的一段python代碼上獲得一些幫助。 我要做的是在基於python的刺激演示軟件上執行任務期間評估幀速率。 這是我所擁有的:

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

我遇到的問題是“ frame2”產生一組數字。 具體來說,它將產生平均值,中位數和標准偏差。 因此,“ frame3”將崩潰。 無論如何,是否只將平均值從getMsPerFrame()輸出中拉出,以便“ frame3”實際運行?

我對編程很陌生,所以我不太熟悉這些東西。

看來您使用的是psychopy模塊,根據其源代碼 ,它顯示getMsPerFrame()返回:

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

哈希符號( # )是Python中的注釋,因此這意味着返回的值是一個元組。 如果返回值是數組,則可以用與wold相同的方式訪問所需的值,如下所示:

>>> print(getMsPerFrame())
(123, 90, 154)
>>> print(getMsPerFrame()[0])
123

如您所見,這是一個非常糟糕的設計,因為它需要閱讀源代碼才能理解所要輸入的數字的含義。 如果您以后遇到類似情況,我將保留原始答案。


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

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

然后,您可以像這樣通過名稱訪問其中的一部分:

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

如果返回這樣的數組:

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

然后,您將必須知道平均值是哪個元素。 假設第二個看起來像這樣(數組的索引為零):

>>> print(frame[1])
123

如果返回這樣的字典數組:

>>> 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM