NumPy数组IndexError:索引99超出轴0的大小为1的范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NumPy数组IndexError:索引99超出轴0的大小为1的范围相关的知识,希望对你有一定的参考价值。

我正在使用Python 3.6,当我尝试使用NumPy数组引用时,我收到了索引错误。

这是我的代码:

import numpy as np

length1 = 35
length2 = 20
siglength = 10

csrf = np.array([])

sm = 2.0 / 35
sm2 = 2.0 / 20

for n in range(0, 198) :

    if n == 0 :
        i = 100
        t = i - 100
        setcsf = t - 0 * sm + 0
        csrf = np.append(csrf, setcsf)

    else :
        i = (close[n] / close[int(n+1)]) * 100
        t = i - 100
        setcsf = t - csrf[int(i-1)] * sm + csrf[int(i-1)]
        csrf = np.append(csrf, setcsf)
print(csrf)

但结果是:

Traceback (most recent call last):
File "test.py", line 64, in <module>
setcsf = t - csrf[int(i-1)] * sm + csrf[int(i-1)]
IndexError: index 99 is out of bounds for axis 0 with size 1

我认为问题是第64行setcsf = t - csrf[int(i-1)] * sm + csrf[int(i-1)],但我绝对不知道如何修改代码并替换它。

答案

是的,错误是由于你的线路

setcsf = t - csrf[int(i-1)] * sm + csrf[int(i-1)]

错误消息

IndexError: index 99 is out of bounds for axis 0 with size 1

你说当你只有大小为1时,你试图在轴0(它唯一的轴)上访问int(i-1)的索引99(csrf的值为99),所以你可以访问的唯一索引是0。

此外,您的示例代码不是Minimal, Complete, and Verifiable example。变量close来自哪里?

也许你想在下面的行中使用n而不是i

setcsf = t - csrf[int(n-1)] * sm + csrf[int(n-1)]

这是有道理的,因为n-1将始终引用前循环运行的索引。你不会得到IndexError

或许你想事先用值来初始化csrf

csrf = np.array([0] * 198)

以上是关于NumPy数组IndexError:索引99超出轴0的大小为1的范围的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 中的 grouby() 函数返回 IndexError:索引 2 超出轴 0 的范围,大小为 2

绘制 k-NN 错误:IndexError:索引 1 超出轴 1 的范围,大小为 1

我如何解决IndexError:列表索引超出范围?

IndexError:数组的索引过多。具有 42 个特征的 Numpy 数组不均匀

IndexError:数组反转中列表索引超出范围

尝试计算 numpy 数组列中的唯一项时出现“IndexError:数组索引过多”