使用python删除曲线下方的数据点

Ill*_*ada 6 python matplotlib scientific-computing scipy

我需要将一些理论数据与python中的实际数据进行比较.理论数据来自解决方程式.为了改进比较,我想删除远离理论曲线的数据点.我的意思是,我想删除图中红色虚线下方和上方的点(用matplotlib制作). 数据点和理论曲线

理论曲线和数据点都是不同长度的阵列.

我可以尝试以粗略的方式移除点,例如:可以使用以下方法检测第一个上点:

data2[(data2.redshift<0.4)&data2.dmodulus>1]
rec.array([('1997o', 0.374, 1.0203223485103787, 0.44354759972859786)], dtype=[('SN_name', '|S10'), ('redshift', '<f8'), ('dmodulus', '<f8'), ('dmodulus_error', '<f8')])    
Run Code Online (Sandbox Code Playgroud)

但我想用一种不太粗略的方式.

那么,任何人都可以帮我找到一个简单的方法来消除问题点吗?

谢谢!

til*_*ten 1

只需查看红色曲线与点之间的差异,如果它大于红色曲线与红色虚线之间的差异,则将其删除。

diff=np.abs(points-red_curve)
index= (diff>(dashed_curve-redcurve))
filtered=points[index]
Run Code Online (Sandbox Code Playgroud)

但请认真对待 NickLH 的评论。您的数据在没有任何过滤的情况下看起来相当不错,您的“异常值”都有很大的误差,不会对拟合产生太大影响。