Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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中生成绘图_Python_Loops_Python 2.7 - Fatal编程技术网

使用嵌套循环在Python中生成绘图

使用嵌套循环在Python中生成绘图,python,loops,python-2.7,Python,Loops,Python 2.7,我正在尝试使用Python和matplotlib进行绘图。我有一个函数streaks(),它获取n布尔值列表,概率p为“真”,并返回连续条纹列表。例如,[True,False,True,True,False]产生[1,1,2,1] 对于n的每个值,我需要使用这个函数500次(从0到400,以10为增量)。在每个n值的500次试验中,我需要找到最大连续条纹,然后取500次试验的平均值 那么,我应该拥有的最后一个绘图,有一个x轴代表n,一个y轴代表平均最大条纹 出于某种原因,我的代码没有达到我想要的

我正在尝试使用Python和matplotlib进行绘图。我有一个函数
streaks()
,它获取
n
布尔值列表,概率
p
为“真”,并返回连续条纹列表。例如,
[True,False,True,True,False]
产生
[1,1,2,1]

对于n的每个值,我需要使用这个函数500次(从0到400,以10为增量)。在每个n值的500次试验中,我需要找到最大连续条纹,然后取500次试验的平均值

那么,我应该拥有的最后一个绘图,有一个x轴代表
n
,一个y轴代表平均最大条纹

出于某种原因,我的代码没有达到我想要的效果,我觉得我拥有了所有的组件。任何帮助都将不胜感激。谢谢

def averagemaximums():
    maxvals = []
    avgmaxvals = []

    for j in range(500):
        for n in range(0, 400, 10):
            maxvals.append(max(streaks(0.5, n)))
            a = (sum(maxvals))/(500)
            avgmaxvals.append(a)

    plot(avgmaxvals)
    show()
编辑:根据要求提供额外信息:

#Makes list of bools
def bools(p, n):
    return (rand(n) < p)

#Makes list that counts successive values
def streaks(p, n):
    run = bools(p, n)

    successionlist = []

    counter = 1
    for j in range(1, n):
        if run[j] == run[j - 1]:
            counter = counter + 1
        else:
            successionlist.append(counter)
            counter = 1
    successionlist.append(counter)
    return successionlist
#制作布尔列表
def布尔(p,n):
返回值(兰特(n)
您没有保存用于创建a的每个值的n的值。因此,当您打印argmaxvals时,您是根据它们的列表索引而不是n来打印它们

尝试此修改:

for j in range(500):
        for n in range(0, 400, 10):
            maxvals.append(max(streaks(0.5, n)))
            a = (sum(maxvals))/(500)
            avgmaxvals.append((n,a))
    x,y = zip(*argmaxvals)
    plot(x,y)
    show()

请发一封信。简而言之,发布我们可以运行的代码(添加
条纹(…)
定义),这样我们就更容易帮助您了。@Christian抱歉,我已经编辑了这个问题。希望现在已经足够清楚了。@Christian我又编辑了一遍。我忘了最后两行。我没有收到任何错误。只是一个错误的情节。谢谢你的帮助。您的代码修复似乎没有解决问题,但我现在看到了问题,并将尝试找到解决方案。