大家好。我对以下情况感到困惑。我有一个包含 60 个值的 mList,我需要以 20 为增量求和。下面的脚本给出了错误的值
import numpy as np
res=[]
for i in range(0,len(mList),20):
r=np.sum(mList[i:i+20])
res.append(r)
print(res)
但是,如果您在此表单中添加“按索引”,则会获得正确的答案
np.sum(mList[0:20])
np.sum(mList[21:40])
np.sum(mList[41:60])
除其他外,我对测试列表中的结果结果是正确的事实感到困惑。
import numpy as np
mList=[1,1,1,2,2,2,3,3,3]
res=[]
for i in range(0,len(mList),3):
r=np.sum(mList[i:i+3])
res.append(r)
print(res)
请告诉我如何才能得到正确的答案?实际列表将包含数千个值...
作者的代码没有
numpy和有测试列表和我的评论如下。代码工作正常。正确地,它也会numpy起作用,从找到原因的@CrazyElf 的回答中可以清楚地看出。您无需更改代码本身的任何内容。您对切片不太了解的内容。
此代码不应给出正确答案!因为切片的右边缘不包含在内。那些。:
因此,元素
20和40你已经从总和中消失了!但是在带有循环的代码中,一切都写得正确,一切都应该正确总结。因此,您只是将答案与错误的答案进行比较。for中的代码操作不正确的原因原来很简单。由于一些错误(?),Python 在列表中添加了一个很大的负数(原则上不可能是由于计算逻辑造成的),因此结果不正确。Del 删除了错误的数字,一切正常。但是这个错误是从哪里来的——又是一个问题......