【问题标题】:IndexError: invalid index to scalar variable in for loopIndexError:for循环中标量变量的索引无效
【发布时间】:2016-03-25 03:51:11
【问题描述】:

我有一个 数组的数组,名为 pdf 的 len(pdf) = 300

pdf[0] 是len(pdf[0]) = 300 的数组

我想做的是,使用sum of pdf[0][50:100] 并对pdf[1][50:100] 重复相同的操作,依此类推直到pdf[300][50:100]。

我尝试的是:

for i,a in enumerate(pdf):
    result.append(a[i][50:100].sum())

但我得到了错误: IndexError: invalid index to scalar variable

【问题讨论】:

  • 你说的是numpy数组还是python列表?

标签: python python-2.7 for-loop indexing append


【解决方案1】:

如果您只需要建立一个简单的列表,那么List Comprehension 就是您的朋友:

result = [i[50:100].sum() for i in pdf]

应该这样做。

在你的 for 循环中,

a 是 pdf[0], pdf[1]...
i 是 0,1...

所以你引用pdf[0][0][50:100], pdf[1][1][50:100]...,因此是tracebck。

这意味着您也可以将循环更改为:

result = []
for a in (pdf):
    result.append(a[50:100].sum())

...但这就是列表推导的用途:)

【讨论】:

    【解决方案2】:

    在

    for i,a in enumerate(pdf):
        result.append(a[i][50:100].sum())
    

    a 实际上是pdf[0]、pdf[1] 等。所以你计算pdf[0][0]、pdf[1][1] 等的总和。

    如果你想:取 pdf[0][50:100] 的总和,然后对 pdf[1][50:100] 重复相同的操作,以此类推直到 pdf[300][50:100]

    你可以的

    result = [a[50:100].sum() for a in pdf]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-17
      • 2020-06-20
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多