根据峰值x值求解对应y值:插值方法使用异常求助
问题:根据峰值x轴(时间轴)值求解对应y轴(价格轴)值
我需要根据峰值对应的x轴(时间轴)数值,求解其对应的y轴(价格轴)数值。参考图表为价格-时间趋势图。我尝试用插值方法实现,但运行以下代码后,得到的结果和谷值的y值完全一致,明显有问题:
new_x_values = np.array([last_six_peaks]) peaks_y_value = np.interp(new_x_values, last_six_peaks, last_six_valley)
问题原因
你的代码逻辑完全搞反了——np.interp的参数顺序是np.interp(待插值的x值, 已知的x序列, 对应已知x的y序列)。你现在把峰值x值同时当成插值目标和已知x序列,又把谷值y序列作为对应y序列,相当于直接返回谷值数组,自然结果和谷值一致。
修正方案
你需要传入完整的时间轴x序列和对应的价格y序列作为已知数据,再把峰值的x值作为插值目标传入,才能得到正确的峰值价格:
# 示例:假设你有完整的时间和价格数据 full_time_x = np.array([...]) # 所有时间点的x轴数据 full_price_y = np.array([...]) # 对应时间点的价格y轴数据 # 要求解的峰值x值数组 peak_x_values = np.array(last_six_peaks) # 插值获取峰值对应的价格 peak_y_values = np.interp(peak_x_values, full_time_x, full_price_y)
注意事项
- 确保
full_time_x是单调递增的,这是np.interp的硬性要求,否则插值结果会出错 - 如果峰值x值超出了
full_time_x的范围,np.interp会直接取边界值,若需要外插可以考虑scipy.interpolate模块中的插值函数
内容的提问来源于stack exchange,提问作者Darrian Thomas
相关产品推荐
相关产品推荐

