小编典典

从返回NumPy数组的循环中收集结果

python

我是公认的非常基本的Python程序员,尝试在实现各种研究问题的过程中学习。而且我遇到了其中一个问题-
特别是如何处理循环,在该循环中我要返回一堆数据,而不是通常的“单数输出”示例,您只需将循环结果添加到之前的所有内容中。

这是我要运行的未循环脚本的要点:https
://gist.github.com/1390355

真正的重点是model_solve函数的结尾:

def model_solve(t):
    # lots of variables set
    params = np.zeroes((n_steps,n_params)
    params[:,0] = beta
    params[:,1] = gamma
    timer = np.arange(n_steps).reshape(n_steps,1)
    SIR = spi.odeint(eq_system, startPop, t_interval)
    output = np.hstack((timer,SIR,params))
    return output

这将返回ODE集成位(spi.odeint)的结果以及一个简单的“我们在什么时间步?”
计时器和本质上是两列的两个随机变量的值重复很多很多次,形式为4950行和7列NumPy数组。

但是,目标是对两个具有随机值的参数(β和γ)进行蒙特卡洛分析。本质上,我想制作一个像这样循环的函数:

def loop_function(runs):
  for i in range(runs):
    model_solve(100)
    # output of those model_solves collected here
  # return collected output

然后将收集到的输出写入文件。通常,我只会让每个model_solve函数将其结果写入文件,但是此代码将在PiCloud或其他平台上运行,在这些平台上,我不一定要编写文件,直到结果返回到本地机器。相反,我试图返回runs*
7列和4950行的巨大NumPy数组-然后可以将其写入本地计算机上的文件中。

关于如何解决这个问题的任何线索?


阅读 214

收藏
2021-01-16

共1个答案

小编典典

使用列表保存所有结果:

results = []
for i in range(runs):
    results.append(model_solve(100))

然后通过以下方式获取输出数组:

np.hstack(results)
2021-01-16