【问题标题】:Iterate a function for different values of an argument针对参数的不同值迭代函数
【发布时间】:2021-04-08 19:32:02
【问题描述】:

我有这个功能:

def run_simulation(nba = 100, maxIter = 10, probI = 0.001, probR = 0.2, probI_init = 0.1, 
                   network = nx.erdos_renyi_graph, netParam=0.1, rep=10):
    r = []
    while len(r) < rep:
        init(nba, probI_init, netParam, network)
        i = 0
        while i < maxIter:
            step(probR, probI)
            nbI = collect_statistics()
            if nbI == 0:
                break
            i = i + 1
        r.append(statS[-1])
    print(((nba - sum(r)/len(r))/nba)*100)

这基本上是网络中病毒的模拟。输出是一个随机数,它是模拟结束时受感染代理的百分比。 我需要为 12 种不同的感染概率(即“probI”定义为函数的参数)绘制此输出。这 12 个概率分别是:

in[]np.logspace(-3,0,12)
out[]array([0.001     , 0.00187382, 0.00351119, 0.00657933, 0.01232847,
       0.0231013 , 0.04328761, 0.08111308, 0.15199111, 0.28480359,
       0.53366992, 1.        ])

我试过这个:

但这并没有输入上面数组的每个数字作为probI的参数,就像:

run_simulation(probI = np.logspace(-3,0,12))

我如何为每个概率循环我的函数?

提前致谢

【问题讨论】:

  • 请问您是如何进行模拟的?恰好是我日常工作的重要组成部分。

标签: python arrays pandas networking networkx


【解决方案1】:

用途:

x = []
y = []

for probI in np.logspace(-3,0,12):
    x.append(probI)
    y.append(run_simulation(probI=probI))

用于绘图:

df = pd.DataFrame({'x': x, 'y': y})
df.plot()

【讨论】:

  • 非常感谢!
  • 最后一件事,我将如何绘制这个循环的输出?
  • 你需要df.plot 方法。你可以探索一下。如果有任何困难,请发布一个包含相关详细信息的新问题。
  • 我知道,但是,虽然 x 值将是“np.logspace(-3,0,12)”,但 y 值将是循环的结果。你知道我该怎么画吗?
  • 我已经编辑了我的答案。您将需要按照这些思路做一些事情。
猜你喜欢
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多