【发布时间】:2021-07-01 18:21:32
【问题描述】:
以下代码摘录在最后一行产生以下错误
IndexError: 列表赋值索引超出范围
我期望 w 是一个包含 3 个值的数组,w[0]、w[1]、w[2]。你看到我的错误了吗?
import numpy as np
n = 7
q = 0.02
pnum = 0
pden = 0
w = [(n - 1) // 2]
for i in range((n - 1) // 2):
for m in range(5):
pnum += (-1)**m * q**(m*(m+1)) * np.sin((2*m+1) * np.pi * i / n)
pden += (-1)**(m+1) * q**((m+1)**2) * np.cos(2 * (m+1) * np.pi * i / n)
num = 2 * q**(0.25) * pnum
den = 1 + 2 * pden
w[i]= num / den
【问题讨论】:
-
w只有一个索引,你在赋值时声明它。所以索引1和2不存在,要么将它们初始化为0,要么使用.append。 -
我怀疑你想要
w = [0] * ((n-1)//2),但你也可以只设置w = []并使用w.append(num/den)。
标签: python numpy for-loop indexing