NumPy array IndexError: индекс 99 выходит за пределы оси 0 с размером 1 - PullRequest
1 голос
/ 20 апреля 2019

Я использую 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)], но я точно не знаю, как изменить код и заменить его.

1 Ответ

0 голосов
/ 20 апреля 2019

Да, ошибка связана с вашей линией

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

В сообщении об ошибке

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

говорится, что вы пытались получить доступ к индексу 99 (int(i-1)имеет значение 99) csrf по оси 0 (его единственная ось), когда он имеет только размер 1, поэтому единственный индекс, к которому вы могли бы получить доступ, был бы 0.

Кроме того, ваш пример кода неa Пример минимального, полного и проверяемого значения .Откуда берется переменная close?

Может быть, вы хотите использовать n вместо i, как показано в следующей строке?

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

Это имеет смысл, поскольку n-1 всегда будет ссылаться на индекс предыдущего цикла.Вы бы не получили IndexError.

Или, может быть, вы хотите инициализировать csrf заранее значениями?

csrf = np.array([0] * 198)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...