Python numpy循环索引越界错误

时间:2013-03-20 04:49:54

标签: arrays for-loop numpy indexoutofboundsexception python-3.2

a1 = np.random.random_sample(10)

a2 = np.random.random_sample(5)

a3 = np.zeros([10])


for i in range(0,9):

    a3[i] = ((a2[i]+a2[i+1])/2.) * ((a1[i+1]-a1[i])/2.) * (a1[i]*a2[i])

    print(i, a3[i])

我尝试运行这个简单的脚本,我收到错误"IndexError: index out of bounds" ... 请不要忘记这个错误?我理解数字5导致的错误,但我无法更改,因为a2数组是从长度为(a2= np.loadtxt('data.txt',unpack=True, usecols=[1])的txt 5加载的 请问任何想法?

1 个答案:

答案 0 :(得分:1)

a2中只有5个元素,因为:

a2 = np.random.random_sample(5) 

但是for for i run for i> 5到8

for i in range(0,9):

    a3[i] = ((a2[i]+a2[i+1])/2.) * ((a1[i+1]-a1[i])/2.) * (a1[i]*a2[i])
                       ^ index out                                ^ index out  

因为您也a2访问a2[i+1]。因此,i最多只能3尝试range(0,4)

编辑

要填写五个额外的1,请执行以下操作:

a2.extend(5*[1])
a2