0
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"...このエラーを回避するためのアイデアはありますか?数値が原因でエラーが発生することは理解していますが、配列が長さのあるtxtから読み込ま5れるため、変更できません 。何か考えてみてください。a2(a2= np.loadtxt('data.txt',unpack=True, usecols=[1])5

4

1 に答える 1

1

a2 次の理由により、要素は 5 つしかありません。

a2 = np.random.random_sample(5) 

しかし、 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)

編集

5 つの余分な 1 を埋めるには、次のようにします。

a2.extend(5*[1])
a2
于 2013-03-20T04:54:08.367 に答える