附加到循环中的数组-Python

附加到循环中的数组-Python,python,vectorization,Python,Vectorization,请参阅问题,了解精简版,无杂乱内容 我正在写一个重力模拟。我的代码的结构是: A解数组-包含质量体系的(已计算)解。由于Python中求解微分方程的性质,所有相关值(每个时间值处每个质量的位置和速度的每个分量)都位于解数组中 数组质量。这里的对象包含关于每个质量的所有信息,包括数组x_history,我将在下面更新这些数组 尺寸编号d。为了简单起见,这里我使用了2 我有以下代码: d = 2 for i in range(len(masses)): # loop through masse

请参阅问题,了解精简版,无杂乱内容

我正在写一个重力模拟。我的代码的结构是:

  • A
    数组-包含质量体系的(已计算)解。由于Python中求解微分方程的性质,所有相关值(每个时间值处每个质量的位置和速度的每个分量)都位于
    数组中

  • 数组
    质量
    。这里的对象包含关于每个质量的所有信息,包括数组
    x_history
    ,我将在下面更新这些数组

  • 尺寸编号
    d
    。为了简单起见,这里我使用了2

我有以下代码:

d = 2
for i in range(len(masses)): #  loop through masses
    for k in range(len(solution)): # loop through solution to obtain values at each timestep
        x = []  #  d dimensional x vector at current timestep
        #  fill the x-vector
        for j in range(d):
            x.append(solution[k][d * i + j])
        masses[i].x_history.append(x)
其思想只是在
mass
数组中循环对象,从另一个数组(
x
表示向量的数组)中提取相关信息,并将其添加到mass对象中的
x_history
数组中。 问题是(我已通过调试对此进行了检查)在以下行中:

masses[i].x_history.append(x)
对于
i
的当前值,代码不会将其附加到
x_历史
,而是将其附加到质量列表中所有对象的
x_历史
数组中,这意味着在外循环的末尾,质量列表中的每个对象都包含所有信息,而不仅仅是其自身的信息


有人知道为什么会这样吗?我是无意中将此操作矢量化还是什么?

似乎是您使循环正确,但将值附加到self.mass[I].x_历史的缩进位置错误。您必须将最后两行语句向后移动一行(四个空格)。

为什么不直接将它们附加到
self.mass[i](x/v)\u history
?或者使用抱歉,您可以扩展吗?我不知道你说的“直接”是什么意思。我在
self.mass[I].x_history.append(solution[k]…
中用其他语言编写了大量程序,但在PythonAs中没有…
。你能试着让其他人重现你的实际问题吗?@meowgoesthedog,因为我正在从较大的数组解决方案数组中生成较小的数组,然后添加它们。我非常确定它位于正确的位置-我在x_数组中添加了许多数组。你可能想编写intential->indent。我同意你的看法。似乎最后两个附件应该被去掉,以便只循环第一个。@VPfB ThankU:-)