【问题标题】:function which iterates over numpy array迭代numpy数组的函数
【发布时间】:2018-11-05 00:59:31
【问题描述】:

我编写了一个简单的函数,它遍历具有一些固定索引的 numpy 数组。

def compute_V(i,j,nA, nB,V):
    Vijkl = np.zeros((i,j,nA,nB))
    for k in range(nA):
        for l in range(nB):
            Vijkl[i,j,k,l] = V[i,j,k,l] + 3

    return Vijkl

我收到以下错误: IndexError:索引 1 超出轴 0 的范围,大小为 1

我做错了什么?

矩阵 V 有一个形状:(1, 2, 1, 2) 并且看起来:

[[[[-0.00009 -0.00001]]

  [[-0.00001 -0.00001]]]] 

i = 0, j = 0, nA = 1, nB = 2 

看起来循环经过了一次迭代:

i,j,k,l,V:  0 0 0 0 -9.39073120245e-05

然后抛出错误。

【问题讨论】:

  • IndexError 表示您正在尝试获取列表中不存在的元素。例如,假设您尝试获取列表的第四个元素,即使该列表只有三个元素。
  • V的形状是什么?可能是与 nA 或 nB 不匹配?
  • V 为 (1, 2, 1, 2), nA = 1, nB =2
  • 与您的问题并不真正相关,但如果您所做的只是在某些元素中填写 3 个,则可以使用更优雅的方法。
  • @anishtain4 这只是更复杂任务的示例。

标签: python numpy numpy-ndarray


【解决方案1】:

Vijkl 的形状是 (i, j, nA, nB),所以每个维度的最大限制是 (i-1, j-1, nA-1, nB-1)。您超出了前两个维度的最大范围。

【讨论】:

    猜你喜欢
    • 2021-05-11
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2013-05-05
    • 2011-10-03
    • 2016-01-28
    • 1970-01-01
    相关资源
    最近更新 更多