【发布时间】:2015-03-21 11:00:17
【问题描述】:
假设我有以下 numpy 数组:
import numpy as np
import matplotlib.pyplot as plt
x = np.array([11.53333333, 11.86666667, 11.1, 10.66666667, 11.2, 11.3,
11.06666667, 12.06666667, 11.8, 13.03333333, 12.4,
12.33333333, 12.53333333, 13.33333333, 12.43333333, 13., 13.2,
13.76666667, 14.96666667, 19.16666667, 25.1, 32.,
83.33333333, 103.76666667, 110.7, 118.63333333, 129.26666667,
139.06666667, 150.3, 161.53333333, 171.16666667, 184.56666667,
196.6, 210.26666667, 221.63333333, 231.3, 244.16666667,
253.5, 254.66666667, 255., 255., 255., 255.,
255., 255., 255., 255., 255., 255.,
255., 255., 255., 255., 255., 255.,
255., 255., 255., 255., 255.])
plt.plot(x)
plt.show()
这是绘制的输出:
如何轻松获得此图中的转折点?例如,第一个转折点大约在 x=20,另一个转折点在 x=37。
是否可以将所有转折点按降序排列,这样我就可以在之后抓住3个最具决定性的转折点?
更新: 我有兴趣获得Inflection Points 和Stationary points。 numpy / scipy 有简单的解决方案吗?
【问题讨论】:
-
您可以尝试从您拥有的数据中近似一些衍生函数。
-
定义“转折点”。请在数学上定义它,而不是用“曲线转弯”来定义。
-
我猜“转折点”应该是指"inflection point"。 (德语翻译错误?)
-
我稍微更新了这篇文章。根据维基百科文章“拐点”,他们也描述了一个“转折点”(见this image