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 m在范围(n)中:…
顺便说一句,为了清晰起见,我建议将变量名从iteration
中缩短。此代码不执行,您尝试附加到ls.append(temp)
在定义之前。请将您的代码固定为MCVE。n\u粒子似乎不是列表。它是一个数字。因此,您无法对其执行求和和和len操作。如果您尚未使用Numpy,则需要添加一个相当重量的库,并且在普通Python列表(而不是数组)上运行时,它不会给性能带来太多好处。我建议使用统计数据。请改用标准库中的mean
。@Blckknghtmean=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