1

私には、6つのタスクに関する反応時間データを提供した50の研究対象があります。タスクの各被験者の平均反応時間を.npyファイル(50被験者*6タスク=300ファイル)として保存し、各タスクのグループ平均を取得したいと思います。これにより、理想的にはグループに6つのファイルが作成されます。

別の言い方をすれば、numpy配列に個々の.npyファイルを追加したいのですが、これを行うための最良の方法に少し迷っています。タスクごとに空の配列を初期化し、サブジェクトの値を入力してから、平均を取得するというアイデアがありました。

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ファイルよりもはるかに優れています。各タスクの各サブジェクトに1つの値しかありませんか?その場合、これを50 x 6のnumpy行列で表現してみませんか?

于 2012-08-31T18:15:29.843 に答える