为什么append会覆盖列表中添加的元素?

时间:2012-04-01 17:54:45

标签: python numpy

我一直在尝试使用此代码更新两个列表,其中numpy已导入为np,其中spkCount是一个包含1.00.0的8 x 10 numpy数组:

mSpikes = []
stdSpikes = []
for line in spkCount:
    if line[10:-1].all() == 0:
        sample = line[0:9]
    else:
        sample = line

    m = np.mean(sample)
    std = np.std(sample)
    mSpikes.append(m)
    stdSpikes.append(std)

当我检查mSpikesstdSpikes时,我发现它们包含以下数据:

In [52]: stdSpikes
Out[52]: [3.2317865716108862]

In [53]: mSpikes
Out[53]: [53.333333333333336]

任何人都可以解释为什么会这样,并提出一个行动方案吗?谢谢。

编辑:我应该提一下,我检查了for循环是否正确迭代,确实如此。 if / else语句也按预期处理。问题确实似乎与list.append ...

的numpy交互有关

2 个答案:

答案 0 :(得分:5)

.append()不会覆盖其操作的列表。您的循环似乎更有可能只运行一次,或者与其余代码分开运行。

答案 1 :(得分:0)

我相信你的问题只涉及mSpikes只有一个元素,每次迭代都要执行。 appand()确实附加到列表中,它不会超出之前的值。我建议检查spkCount - 这应该是一个范围,也许它只包含一个项目。