附加到循环中的数组-Python

时间:2019-03-04 11:33:58

标签: python vectorization

请查看this问题以获取精简的版本

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

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

  • 数组masses。这里的对象包含有关每个质量的所有信息,包括我要在下面更新的数组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)

这个想法只是简单地遍历masses数组中的对象,从另一个数组(表示向量的x数组)中提取相关信息,然后将其添加到x_history数组中在大量物体中。 问题是(我已经通过调试检查了它)在以下行中:

masses[i].x_history.append(x)

代码没有为masses[i].x_history的当前值附加到i,而是将其添加到质量列表中所有对象的x_history数组,这意味着在...的末尾在外循环中,质量列表中的每个对象都包含全部信息,而不仅仅是其自身的信息。

有人为什么会这样吗?我是不小心将这一操作矢量化了吗?

1 个答案:

答案 0 :(得分:0)

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