【发布时间】:2018-08-15 17:42:49
【问题描述】:
我使用的是 python-3.x,我有两个循环,第一个是运行次数(3 次),第二个是生成解决方案(2 次)
我想做的是: 从第二个循环中收集最佳解决方案并将其附加到数组或列表中。 作为第一个循环的下一次运行将再次运行第二个循环,它将从第二个循环中收集最佳解决方案并将其附加到相同的数组或列表中。每次运行我将有两个解决方案,总共有六个解决方案。
问题是: 我想将“最佳解决方案”附加到下一次运行的相同索引位置。
在我的情况下,数组最终的大小为 6,但我希望它的大小为 3,其中每个索引将包含两个值(最佳解决方案)
run 1: 数组内的结果: index 0 "第一个最佳解决方案。" index 1 "次优方案。"
run 2: 数组内的结果: index 0 "第一个最佳解决方案。" “第一个最佳解决方案。”
index 1 "次优解决方案。" “第二好的解决方案。”
如果您看一下代码和结果,您会更清楚我要做什么? 非常感谢您提供的任何建议或帮助
import matplotlib.pyplot as plt
import math
import random
import numpy as np
import pylab
from numpy import median
import os
import subprocess as sp
run = 3
best_solutions = [np.empty(0)]
del best_solutions[0]
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
for i in range (run):
lower = 300
upper = 500
number_of_solutions = 50
generate_solutions = 2
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
for ii in range (generate_solutions):
list_of_solutions = np.random.uniform(lower, upper, number_of_solutions)
best_solutions.append(min(list_of_solutions))
lower = lower - 30.4323434
upper = upper - 90.634555
del (number_of_solutions)
del (lower)
【问题讨论】:
-
您在此处生成的候选解决方案只是数字,因此在内存中存储 6 个值不是限制。您是否考虑过存储所有内容然后计算您的“最佳”?还是
np.random.uniform是繁重计算的替代品? -
您编写期望结果的方式相当难以理解。如果您只是给出数字示例,以及您希望在最终列表中列出哪些示例,则很可能很容易解决
标签: arrays python-3.x list numpy append