为参数的不同值迭代函数
Iterate a function for different values of an argument
我有这个功能:
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))
如何为每个概率循环我的函数?
提前致谢
使用:
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()
我有这个功能:
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))
如何为每个概率循环我的函数?
提前致谢
使用:
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()