以下代碼有效,但儘管一些努力無法弄清楚如何使用numpy數組(使用nditer)而不是python列表(使用枚舉)。Numpy數組而不是python列表 - 使用nditer從兩個1d數組創建一個2d數組
這是一個心理學實驗,每個試驗呈現四種刺激之一,並且記錄參與者的反應時間。然後通過從兩個1d陣列創建2d陣列,爲四種試驗類型的每一種計算平均反應時間。
trialTypeData = [3, 0, 2, 1, 1, 0, 2, 3]
Rt = [900, 1200, 1300, 1400, 1100, 1200, 1300, 1400]
RtByTrialType = [0, 0, 0, 0]
meanRtByTrialType = [0, 0, 0, 0]
for trialType in range(0, 4):
RtByTrialType[trialType] = [Rt[i] for i, x in enumerate(trialTypeData) if x == trialType]
meanRtByTrialType[trialType] = sum(RtByTrialType[trialType])/len(RtByTrialType[trialType])
print "Average latencies by Trialtype:"
print (meanTrialTypeRt)
我想你可以使用'bincount' /'digitize' /'直方圖'三重奏的成員來避免listcomp,但恕我直言,它比它的價值更麻煩。 – DSM
優秀 - 這正是我所尋找的;無論是在解決方案和學習方面。謝謝。 –