我正在尝试使用python查找曲线上的拐点。曲线的数据在此处:https : //www.dropbox.com/s/rig8frgewde8i5n/fitted.txt?dl=0。请注意,曲线已拟合到原始数据。原始数据可在此处获取:https://www.dropbox.com/s/1lskykdi1ia1lu7/ww.txt?dl = 0
import numpy as np
# Read in array from text file
arr = np.loadtxt(path_to_file)
inflexion_point_1 = np.diff(arr).argmin()
inflexion_point_2 = np.diff(arr).argmax()
Run Code Online (Sandbox Code Playgroud)
这两个拐点在附图中显示为红线。但是,它们的位置似乎不正确。第一个拐点应靠近黑色箭头指示的区域。我该如何解决?
另外,这是差分的图:
plt.axvline(np.gradient(arr[:365]).argmax())
Run Code Online (Sandbox Code Playgroud)
如您所见,代码的行为与编码相同,即找到了数组np.diff的argmax。但是,我想找到一个接近第110天的位置,即距argmax大约一半的位置。
- 编辑 -
另外,这是另一个显示原始数据和拟合曲线的曲线图(使用二次函数)。