我想得的是点(x, y)
,其中y值对于给定的x和y值变得更平滑。
例如,
x = range(10)
y = [0.3, 0.37, 0.41, 0.52, 0.64, 0.68, 0.71, 0.72, 0.73, 0.74]
plt.plot(x, y)
我希望获得图表开始稳定的红色圆点(或接近点)。
我该怎么做?
答案 0 :(得分:5)
您正在寻找的是斜率或更准确的一阶差异,以便了解曲线开始平滑的位置,您可以计算出第一阶差异/斜率并找出第一个斜率低于某个阈值的指数:
import matplotlib.pyplot as plt
import numpy as np
x = np.array(range(10))
y = np.array([0.3, 0.37, 0.41, 0.52, 0.64, 0.68, 0.71, 0.72, 0.73, 0.74])
slopes = np.diff(y) / np.diff(x)
idx = np.argmax(slopes < 0.02) # find out the first index where slope is below a threshold
fig, ax = plt.subplots()
ax.plot(x, y)
ax.scatter(x[idx], y[idx], s=200, facecolors='none', edgecolors='r')