1

我有 50 名研究对象,他们提供了六项任务的反应时间数据。我将每个主题对任务的平均反应时间存储为 .npy 文件(50 个主题 * 6 个任务 = 300 个文件),并且我希望获得每个任务的组平均值。理想情况下,这将导致该组有六个文件。

换句话说,我想用单独的 .npy 文件填充一个 numpy 数组,但是我对最好的方法有点迷失了。我的想法是为每个任务初始化一个空数组,用主题值填充它,然后得到平均值。

subjects=range(1,51)
tasks=['a','b','c','d','e','f']
datalist=[]

for subject in subjects:
    for task in tasks:

        array=np.array(datalist)
        f=np.load('%d/%s.npy' % (subject,event))
        result=np.append(array,f)
        mu=np.mean(result)
        sav=np.save('%s' %(task),mu)

此代码的结果是该系列中的最后一个值,表明该数组未正确填充。任何想法将不胜感激!

4

1 回答 1

3

您每次都在重新创建一个新数组,因为它位于 for 循环内。实际上,您正在array为每个主题和每个任务创建、附加一个数组、取平均值,然后保存。您应该像这样组织它:

for task in tasks:
    result=np.array([])
    for subject in subjects:
        f=np.load('%d/%s.npy' % (subject,event))
        result=np.append(result,f)
    mu=np.mean(result)
    sav=np.save('%s' %(task),mu)

ETA:顺便说一句,存储这些数据的方法比存储在 300 个单独的 .npy 文件中要好得多每个任务的每个主题是否只有一个值?在那种情况下,为什么不直接表示这个 50 x 6 的 numpy 矩阵呢?

于 2012-08-31T18:15:29.843 回答