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

4

1 回答 1

1

里面只有5个元素,a2 因为:

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)

编辑

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

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