首页 > 解决方案 > IndexError:索引 121383 超出轴 0 的范围,大小为 117111

问题描述

你能帮我解决这个错误吗?

我的代码是:

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。不应该给出峰值的最大值吗?

“peaks”数组给出数据集的值,而不是索引。像这样:

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”符号。

最终结果的艺术表现

标签: pythonmatplotlibplotscipystatistics

解决方案


对于任何对此问题感兴趣的人,一位好用户帮助我解决了这个问题。但是,它并不能解决 zip 问题,但这并不重要,因为它可以解决问题本身。


推荐阅读