【问题标题】:Index error when trying to find positions of array values尝试查找数组值的位置时出现索引错误
【发布时间】:2017-12-23 21:46:43
【问题描述】:

我试图在数组“out_der”中找到“out_max”中每个元素的位置。我想将每个值位置的索引存储在一个名为“out_pos”的数组中。 “out_der”是一个 400x300x60x27 数组,“out_max”是一个 400x300x60 数组。 “out_pos”也应该是一个 400x300x60 的数组。我尝试将“out_der”转换为列表并使用.index(),但这不起作用(因为列表只有 400 个元素)。这是我目前的尝试:

输入:

    out_max=[]
    out_pos=[]
    out_max=np.amax(out_der,axis=3)

    for i in range(0,len(out_der)-1):
        out_pos[i]=np.where(out_der==out_max[i])[0]

但我收到此错误:

输出:

       18 for i in range(0,len(out_der)-1):
  ---> 19     out_pos[i]=np.where(out_der==out_max[i])[0]

  IndexError: list assignment index out of range 

【问题讨论】:

  • out_pos 在开始时是一个空列表,因此所有索引都超出了范围。你可能想要append,但我不确定我是否清楚你在做什么。
  • 除上一条注释外:将out_pos初始化为out_pos=[[]] * len(out_der)
  • 也就是说错误来自out_pos[i] =。与numpy无关。
  • @roganjosh 它不允许我使用 append ,我认为因为它不是一个列表

标签: python arrays indexing index-error


【解决方案1】:

我认为这是因为您初始化了需要初始化 out_max 和 out_pos = np.empty((400,300,60)) 的一维数组

【讨论】:

    【解决方案2】:

    你说

    “out_pos”也应该是一个 400x300x60 的数组

    但是你用

    声明它

    out_pos=[].

    这使它成为一维 0 长度列表。

    要创建一个所有值都初始化为 0 的 400x300x60 数组,请使用

    out_pos = np.zeros((400,300,60))

    如果您希望数组中的特定值不为零,则可以使用

    out_pos.fill(value)

    创建之后。

    【讨论】:

    • @WalterBlair 谢谢,我完全忘记了。但是,当我修复此错误时:` 17 for i in range(0,400*300*60): ---> 18 out_pos[i]=(np.where(out_der==out_max[i])) 19 ValueError : 无法将输入数组从形状 (0) 广播到形状 (60) `
    猜你喜欢
    • 2021-01-15
    • 1970-01-01
    • 2021-01-03
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多