我做了很多 ODE 模拟,并使用了一些需要作为列表传入参数的 Python 参数优化工具(例如 scipy.optimize.minimize、 emcee )。这使它们非常麻烦,因为我必须将参数称为params[0]
、params[1]
等,而不是更直观的名称,这些名称实际上描述了它们在模拟中的作用。到目前为止,我对此的解决方案是这样的:
k1 = 1.0
k2 = 0.5
N = 0.01
params = [k1,k2,N]
def sim(params,timerange):
k1 = params[0]
k2 = params[1]
N = params[2]
# run the simulation
这真的很笨拙,并且由于多种原因而不能令人满意。每当我需要向模拟添加新参数时,我都必须修改参数列表并更改我在模拟函数中手动解包列表的方式;浪费一些时间在每一轮模拟中建立新的参考,等等。
我想知道是否有一个理智的、非笨拙的解决方案来定义带有名称的参数,将它们作为列表传递给函数,然后通过列表中的相同名称来引用它们。