Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python-numpy从多个文件创建数组_Python_Arrays_Numpy - Fatal编程技术网

python-numpy从多个文件创建数组

python-numpy从多个文件创建数组,python,arrays,numpy,Python,Arrays,Numpy,我有50名研究对象,他们提供了六项任务的反应时数据。我将每个受试者对一项任务的平均反应时间存储为一个.npy文件(50个受试者*6个任务=300个文件),我希望得到每个任务的组平均反应时间。这将理想地为组生成六个文件 换句话说,我想用单个的.npy文件填充一个numpy数组,但我对最好的方法有点迷茫。我的想法是为每个任务初始化一个空数组,用主题的值填充它,然后得到平均值 subjects=range(1,51) tasks=['a','b','c','d','e','f'] datalist=[

我有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)

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

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

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×6 numpy矩阵?

您所说的“此代码的结果”是什么意思?什么被拯救了?将保存的只是一个值(整个列表的平均值)。你确定这不是被保存的吗?是的,所以我手工做了一个比较,并且可以验证平均值与被保存的不同。我使用numpy的经验有限,但这似乎是一个更好的解决方案。我喜欢有一个文件的想法,该文件可以作为将来进行额外分析的基础,而无需重新创建原始的反应时间计算。您仍然可以将50×6矩阵保存在一个文件中。然后它只是一个文件而不是300个!嗯,我似乎从你的代码中得到了相同的结果。我只看到序列中的最后一个值,但看不到平均值。但是,再一次,你应该把它放到一个矩阵中。如果它在一个有50行6列的矩阵
m
中,你所需要做的就是
np.mean(m,axis=1)
并且你将拥有每列的所有6个平均值。大家,我们应该记住,在
np.array
中追加是个坏主意。您只需创建一个基本列表
result=[]
,附加到此列表,然后创建一个数组并取其平均值。