Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 索引器:索引121383超出大小为117111的轴0的界限_Python_Matplotlib_Plot_Scipy_Statistics - Fatal编程技术网

Python 索引器:索引121383超出大小为117111的轴0的界限

Python 索引器:索引121383超出大小为117111的轴0的界限,python,matplotlib,plot,scipy,statistics,Python,Matplotlib,Plot,Scipy,Statistics,你能帮我解决这个错误吗 我的代码是: 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')

你能帮我解决这个错误吗

我的代码是:

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')
“峰值”数组包含数据集峰值的值。然而,这很奇怪,因为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”符号


您的
find\u peaks
方法返回的索引大于整个数组的长度。Python然后尝试在117111个数字的列表中查找121383个数字。这显然是不可能的,任务失败了


问题可能出在
find_peaks
方法中。你检查过它是否真的返回索引而不是峰值的y值了吗?

对于任何对这个问题感兴趣的人,一位优秀的用户在这方面帮助了我。但是,它不能解决zip问题,但这并不重要,因为它本身就解决了问题。

index out bounds告诉您,您的索引超出了数组的大小。数组是否表示“peaks”数组?当它不是一个真正的峰值时,我是否应该输入值“-1”,然后绘制它?我认为这将解决这种情况,因为索引和“质量”值的大小相同,只是“峰值”数组不同,对吗@U3.1415926它应该是您的
y
数组和
峰值。您可以通过打印峰值的最大值和峰值的大小来测试这一点。奇怪的是,“查找峰值”不应该给出峰值值(这也是我的数据集的最大值)?因为max(peaks)是113940,max(my_dataset.quality)是66790.0,这很奇怪。另外,len(peaks)是11952,len(my_dataset.index)是117111-这没关系。如果您能提供一个最小的工作示例,它总是最好的。它返回y值的峰值。我想在我的图的顶点上画一个“x”。一旦“查找峰值”方法找到峰值,我是否应该记录数据集的索引,以便解决我的需要?您能否将
find\u peaks
方法添加到您的问题中?如果
max(peaks)
返回113940,并且数组有117111个条目,那么将不再抛出数组越界异常。您可以使用
x.index(y)
方法获取x数据数组中y值的索引。
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, ...