Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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 - Fatal编程技术网

Python 如何计算每次迭代的平均值?

Python 如何计算每次迭代的平均值?,python,Python,我想在每次迭代中计算候选适应度的平均值,但我不知道怎么做 import pandas as pd import numpy as np while iteration < n_iterations: print('iteration fitness_candidate') for i in range(n_particles): temp = [] fitness_cadidate = fitn

我想在每次迭代中计算候选适应度的平均值,但我不知道怎么做

import pandas as pd
import numpy as np

  while iteration < n_iterations:
        print('iteration     fitness_candidate')
        for i in range(n_particles):

            temp = []
            fitness_cadidate = fitness_function(particle_position_vector[i])
            print(iteration,' ', -(fitness_cadidate))

            temp.append(iteration)
            temp.append(particle_position_vector[i])
            temp.append(-(fitness_cadidate))
            ls.append(temp)

        iteration = iteration + 1

ls = pd.DataFrame(ls)
您可以使用:

while iteration < n_iterations:
    print('iteration     fitness_candidate')
    for i in range(n_particles):
        print(iteration,' ', -(fitness_cadidate)

    print("Average",' ', sum([-(fitness_function(particle_position_vector[i])) for i in range(n_particles)])/len(n_particles))
    iteration = iteration + 1

迭代时
如果您有一个循环,python list comprehension允许您直接将结果转储到一个列表中
[i for i in data]
。这意味着我们可以对所述列表应用numpys平均值函数并获得一个结果。如果您想要一个结果列表,我们可以在每个迭代周期将这些结果添加到一个新列表中(
results

import numpy as np

results =[]

while iteration < n_iterations:
    print('iteration     fitness_candidate')

    mean = np.mean( [-(fitness_cadidate) for i in range(n_particles)] )

    print(iteration,mean)
    results.append(mean)

    iteration = iteration + 1
将numpy导入为np
结果=[]
当迭代
为什么不直接在主数据源上操作?请显示
for
行和
打印(…(候选)之间缺少的代码
。必须有一些东西来生成每个适应度候选值,是函数调用、内部for循环、数据帧查找还是什么?@smci我添加了缺少的代码。当迭代只是一个伪装的for循环:
for m在范围(n)中:…
顺便说一句,为了清晰起见,我建议将变量名从
iteration
中缩短。此代码不执行,您尝试附加到
ls.append(temp)
在定义之前。请将您的代码固定为MCVE。n\u粒子似乎不是列表。它是一个数字。因此,您无法对其执行求和和和len操作。如果您尚未使用Numpy,则需要添加一个相当重量的库,并且在普通Python列表(而不是数组)上运行时,它不会给性能带来太多好处。我建议使用
统计数据。请改用标准库中的mean
。@Blckknght
mean=lambda x:sum(x)/len(x)
,而且您甚至不必导入外部库-如果这是您想要的。
import numpy as np

results =[]

while iteration < n_iterations:
    print('iteration     fitness_candidate')

    mean = np.mean( [-(fitness_cadidate) for i in range(n_particles)] )

    print(iteration,mean)
    results.append(mean)

    iteration = iteration + 1