如何存储循环中计算的值

2024-04-19 09:09:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把在每个循环中计算的值存储在一个数组中。你知道吗

Q2 = np.array([20, 25, 30, 25, 20, 15, 10, 15, 20, 25, 30, 25, 20])
Q3 = np.array([40, 45, 50, 45, 40, 35, 30, 35, 40, 45, 50, 45, 40])


for i in range(13):   
    m = GEKKO()             # create GEKKO model
    x = m.Var(value=0)      # define new variable, initial value=0
    y = m.Var(value=0)      # define new variable, initial value=1
    z = m.Var(value=0)
    m.Equations([x - y == Q2[i], y + z == Q3[i],
                 K[0]*x**2 + K[1]*y**2 - K[2]*z**2 == 0]) # equations
    m.solve(disp=False)     # solve

    print([x.value, y.value, z.value]) # print solution

对于每个Q(i),我期望得到:x.value(i),y.value(i),z.value(i)

现在它打印出所有的答案,但我希望它存储在一个矩阵中。你知道吗


Tags: newforvaluevarnp数组arrayvariable
3条回答

与前面的答案类似,您还可以使用numpy数组和列表来实现这一点。由于简单,我通常使用嵌套列表。你知道吗

举个例子:

my_list = []
for i in range(3):
    my_list.extend([i,i*2,i*3])
print(my_list)

OUTPUT
[[0, 0, 0], [1, 2, 3], [2, 4, 6]]

你有两个解决方案,要么你可以创建一个包含3个数字的类,这3个数字是x,y和z,然后创建一个这个类的列表。所以基本上你会有这样的结构:

容器类:int x 内景 内景z

然后你为你想要的每一对夫妇创建一个这个类的对象,然后把他们存储到一个列表中。你知道吗

或者可以创建3个列表,一个用于x,一个用于y,一个用于z。 在每一次迭代中,您都会将每个值存储在相应的列表中。 因为每个列表都有相同的索引,所以只需要有一个索引值,并将给定的值签入每个列表。你知道吗

如果一个新的pandas dataframe对您有好处(正如我所做的,因为它使结果更容易理解),您可以在循环之前创建一个空的dataframe,使用:

df = pd.DataFrame(columns=['X', 'Y', 'Z'])

并在每个循环结束时指定:

df.loc[len(df)] = (x.value, y.value, z.value)

相关问题 更多 >