python 为对应的x值寻找y值,插值法适合吗?

mzmfm0qo  于 2023-03-06  发布在  Python
关注(0)|答案(1)|浏览(117)

我试图找到对应x值(峰值)的y值。
Chart for reference
峰值是以时间(x轴)来衡量的,但我想找到它们在价格(y轴)中的值。
我在网上看到,插值可以用来找到y值,但我得到的输出与山谷的y值相同。
这是我使用的代码:

new_x_values = np.array([last_six_peaks])

peaks_y_value = np.interp(new_x_values, last_six_peaks, last_six_valley)
2g32fytz

2g32fytz1#

假设你只能访问jpeg图像,并且你必须手动读取其中的值,我建议你这样做:在MS Paint(或其他图像查看器/编辑器)中打开图像,它给出了x-y位置(以像素为单位),并获得至少两个y轴刻度线的y像素值。这样做并将它们放入Python列表中,我得到:

# values at the lowest and highest y-tick marks
yticks = [1.884e9, 1.898e9]

# corresponding (approximate) y-pixel values
ypixels = [365, 52]

使用这些来获得y轴的梯度,即每像素y值的变化:

dydp = (yticks[1] - yticks[0]) / (ypixels[1] - ypixels[0])

然后你就可以得到你想要的蓝色峰值点的y像素值了(我将计算用黑线标记的两个峰值点):

import numpy as np

# y-pixel position of the peaks
peaks = np.array([91, 38])

并利用梯度计算出它们的y值:

yvalues = yticks[0] + dydp * (peaks - ypixels[0])

print(yvalues)
array([1.89625559e+09, 1.89862620e+09])

这实质上是对值之间的点进行线性内插,对范围之外的点进行线性外插(即,最高峰,位于最后一个y刻度标记之上):

相关问题