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

blz*_*blz 0 python numpy

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

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)
Run Code Online (Sandbox Code Playgroud)

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

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

In [53]: mSpikes
Out[53]: [53.333333333333336]
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么会发生这种情况并提出一个行动方案吗?谢谢.

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

Amb*_*ber 5

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

  • 这些都是我的想法,所以我查了一下.循环运行8次(如预期的那样),并按预期输入if/else语句. (2认同)
  • 琥珀,我也试过了.这是输出,以防我错过了一些东西:http://paste.ubuntu.com/910471/ (2认同)