索引越界(Python)

时间:2017-05-04 06:31:38

标签: python indexing bounds out

我有一些我希望汇总的数据,但我得到索引超出界限错误,我似乎无法找出原因。这是我的代码:

if period == "hour":
    n=3
    tvec_a=np.zeros([24,6])
    tvec_a[:,3]=np.arange(0,24)
    data_a=np.zeros([24,4])
elif period == "day":
    n=2
    tvec_a=np.zeros([31,6])
    tvec_a[:,2]=np.arange(1,32)
    data_a=np.zeros([31,4])
elif period == "month":
    n=1
    tvec_a=np.zeros([12,6])
    tvec_a[:,1]=np.arange(1,13)
    data_a=np.zeros([12,4])
elif period == "hour of the day":
    tvec_a=np.zeros([24,6])
    tvec_a[:,3]=np.arange(0,24)
    data_a=np.zeros([24,4])
i=0
if period == "hour" or period == "day" or period == "month":
    while i <= np.size(tvec[:,0]):
        data_a[tvec[i,n],:]=data_a[tvec[i,n],:]+data[i,:]
        i=i+1
        if i > np.size(tvec[:,0]):
            break

如果我每天或每个月都会这样做,我只会收到错误。小时工作得很好。 (代码是接收tvec,数据和句点的函数的一部分)

Traceback (most recent call last):

  File "<ipython-input-23-7fb910c0f29b>", line 1, in <module>
    aggregate_measurements(tvec,data,"month")

  File "C:/Users/Julie/Documents/DTU - design og innovation/4. semester/Introduktion til programmering og databehandling (Python)/Projekt 2 electricity/agg_meas.py", line 33, in aggregate_measurements
    data_a[tvec[i,n],:]=data_a[tvec[i,n],:]+data[i,:]

IndexError: index 12 is out of bounds for axis 0 with size 12

编辑:通过在tvec:

的值上写下减1来修正它
data_a[tvec[i,n]-1,:]=data_a[tvec[i,n]-1,:]+data[i,:]

1 个答案:

答案 0 :(得分:1)

由于列表是0索引的,因此只能在12个元素的数组上使用索引11。

因此while i <= np.size(tvec[:,0])应该是while i < np.size(tvec[:,0])

额外注意:break是不必要的,因为一旦条件满足,while循环将停止。