【问题标题】:Index Error when creating Numpy Array from For Loop从 For 循环创建 Numpy 数组时出现索引错误
【发布时间】: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


【解决方案1】:

这一行 w = [(n - 1) // 2] 正在创建一个大小为 1 的列表,其中包含整数值 3。您应该查看创建数组的方式或将其创建为空并使用函数 append。

【讨论】:

    【解决方案2】:

    简单的跟踪显示问题。我插入了一个简单的print 来跟踪这些值。

    den = 1 + 2 * pden
    print(i, w)
    w[i]= num / den
    

    输出是

    0 [3]
    1 [0.0]
    Traceback (most recent call last):
      File "C:\Users\Prune\AppData\Local\Programs\Python\Python37\so.py", line 14, in <module>
        w[i]= num / den
    IndexError: list assignment index out of range
    

    w 是一个单元素列表,您正在尝试索引第二个元素。如果要扩大列表,则需要使用appendextend。有关应用程序的详细信息,请查看您当地的教程。

    【讨论】:

      猜你喜欢
      • 2015-03-15
      • 1970-01-01
      • 2023-04-01
      • 2020-05-07
      • 2021-12-13
      • 2023-03-07
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多