IndexError: индекс 121383 находится за пределами оси 0 с размером 117111 - PullRequest
1 голос
/ 07 августа 2020

Вы можете мне помочь с этой ошибкой пожалуйста?

Мой код это:

peaks, _ = find_peaks(my_dataset['quality'], height=500)
plt.figure(figsize=(10,8))
x = my_dataset.index
y = my_dataset['quality']
plt.plot(x, y)
plt.plot(peaks, y[peaks], "x")

plt.xlabel('datetime')
plt.ylabel('values')
plt.legend(loc='best')
plt.title('Qualities')
plt.show()

И я получил эту ошибку:

  ---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-57-97109c9c4b15> in <module>
      3 y = my_dataset['quality']
      4 plt.plot(x, y)
----> 5 plt.plot(peaks, y[peaks], "x")
      6 
      7 plt.xlabel('datetime')

... IndexError: индекс 121383 находится за пределами оси 0 с размером 117111

Что это означает и как его исправить? Что мне написать по-другому?

PS: Мой набор данных выглядит примерно так:

   cdf_epoch
2003-10-10 00:01:33.985000+00:00    3.294
2003-10-10 00:10:06.130000+00:00    3.294
2003-10-10 00:18:37.959000+00:00    3.917
2003-10-10 00:27:10.104000+00:00    3.116
2003-10-10 00:35:41.933000+00:00    3.383
                                    ...  
2003-11-09 23:20:19.140000+00:00    8.636
2003-11-09 23:28:50.969000+00:00    9.170
2003-11-09 23:37:23.113000+00:00    7.301
2003-11-09 23:45:54.943000+00:00    9.170
2003-11-09 23:54:27.087000+00:00    7.657

Массив "peaks" содержит значения всплесков набора данных. Однако это довольно странно, поскольку max (peaks) дает 113940, а max (my_dataset.quality) дает 66790.0. Не должен давать максимум значений пиков?

Массив «пиков» дает значения набора данных, а не индекс. Вот так:

array([  4112,   4117,   4124,   4126,   4131,   4135,   4137,   4139,
     4143,   4146,   4150,   4154,   4156,   4158,   4160,   4164,
     4169,   4174,   4176,   4181,   4184,   4186,   4191,   4193, ...

Окончательный результат, который я хочу быть таким: (я отредактировал текущую гистограмму, чтобы увидеть идею). Итак, в конце я просто хочу поставить знак "X" на пики набора данных.

Artisti c представление конечного результата

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Ваш метод find_peaks возвращает индекс, размер которого превышает длину всего массива. Затем Python пытается найти 121383-й номер в списке 117111 номеров. Очевидно, это невозможно, и задача не выполняется.

Вероятно, проблема в вашем методе find_peaks. Вы проверили, действительно ли он возвращает индекс, а не значение y вашего пика?

0 голосов
/ 07 августа 2020

Всем, кто интересуется этой проблемой, мне помог в этом вопросе хороший пользователь. Однако это не решает проблему с zip-файлом, но это не имеет значения, потому что оно решает саму проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...