Python 从matplotlib获取步骤函数值

Python 从matplotlib获取步骤函数值,python,numpy,matplotlib,curve-fitting,Python,Numpy,Matplotlib,Curve Fitting,我有两个带数据的numpy数组,比如说x,y,我应用plt.step(),得到它的连续(步长)曲线 我希望能够自己创建此函数,这意味着我希望对x的y值有一个(零阶保持)阶跃近似值,该值实际上不存在于原始x数组中 例如,在以下链接中,我希望得到“新”的实际矩形正弦值,而不仅仅是打印: 您可以根据需要选择勾号值和相应的函数值。这是一个不等距参数及其值的示例: x = np.arange(20) + np.random.random(20)/2 y = np.sin(x / 2)**2 + np.ra

我有两个带数据的numpy数组,比如说
x,y
,我应用
plt.step()
,得到它的连续(步长)曲线

我希望能够自己创建此函数,这意味着我希望对
x
y
值有一个(零阶保持)阶跃近似值,该值实际上不存在于原始
x
数组中

例如,在以下链接中,我希望得到“新”的实际矩形正弦值,而不仅仅是打印:

您可以根据需要选择勾号值和相应的函数值。这是一个不等距参数及其值的示例:

x = np.arange(20) + np.random.random(20)/2
y = np.sin(x / 2)**2 + np.random.random(20)/5
备注:这两个数组的大小必须相等。如果您想要自定义函数,可以使用
np.vectorise

x = np.arange(20) + np.random.random(20)/2
func = np.vectorize(lambda x: np.sin(x) + np.random.random()/5)
y = func(x)
您可以使用scipy创建一个step函数。默认插值为“线性”,但对于阶跃函数,可以将其更改为“下一步”、“上一步”或“最近”

step\u-fun=interp1d(x,y,kind='previous')
获取标准的步长函数,然后将其称为
step\u-fun(new\u-x)

以下代码比较了不同类型的“插值”:

从matplotlib导入pyplot作为plt
将numpy作为np导入
从scipy.interpolate导入interp1d
x=np.随机.均匀(0.1,0.7,20).cumsum()
y=np.sin(x)
种类=['线性','上一个','下一个','最近的','立方']
对于i,枚举中的种类(种类):
函数从点开始=interp1d(x,y+i,种类=kind)
x_detailed=np.linspace(x[0],x[-1],1000)
plt.plt(x_详细,函数从x_点(x_详细),颜色='dodgerblue')
plt.散射(x,y+i,color='crimson')
plt.yticks(系列(种类)),种类)
plt.show()