2013-03-20 64 views
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" ... 請任何想法,以避免這個錯誤?我明白,造成的錯誤號碼5,但我不能改變,因爲a2陣列從txt (a2= np.loadtxt('data.txt',unpack=True, usecols=[1])加載它的長度是5 請任何想法?Python的numpy的循環索引出界失誤

回答

1

有一個在a2只有5個元素,因爲:

a2 = np.random.random_sample(5) 

,但在循環運行的我> 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 

因爲你訪問a2a2[i+1]也。所以i最多可以3嘗試range(0,4)

編輯

爲了填補五個額外的1秒不喜歡:

a2.extend(5*[1]) 
a2 
+0

是的,我知道這個問題...任何想法來爲他們做讓這個腳本運行? (給a2增加零,並增加它的長度) – user1640255 2013-03-20 04:59:59

+0

@ user1640255增加了一個ides試一試 – 2013-03-20 05:02:50

+0

我改變了範圍(0,9)! ...而且在我的劇本的另一部分中,a2的長度是15,比其他人多...那麼最新?我有添加零到其他數組?任何其他想法? – user1640255 2013-03-20 05:06:02