加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python numpy检测并消除不需要的值

发布时间:2020-12-20 11:47:07 所属栏目:Python 来源:网络整理
导读:我在Numpy数组中有一组(x; y)点,代表下面显示的曲线.我想检测并消除数组中破坏函数连续性的值.有可能吗? 编辑 这是非期望值所在的函数的一组数据值.我手动定位但这不是我需要的 set_of_data = np.array([ [ 0.01099914,0.1990088 ],[ 0.00235953,0.20015288
我在Numpy数组中有一组(x; y)点,代表下面显示的曲线.我想检测并消除数组中破坏函数连续性的值.有可能吗?

enter image description here

编辑
这是非期望值所在的函数的一组数据值.我手动定位但这不是我需要的

set_of_data = np.array([
     [ 0.01099914,0.1990088 ],[ 0.00235953,0.20015288],[-0.00628651,0.20127308],[-0.01493928,0.20236874],[-0.02359911,0.20343921],[-0.0322663,0.20448377],[-0.04094121,0.20550169],[-0.04962419,0.20649219],[-0.0583156,0.20745447],[-0.06701583,0.20838767],[-0.07572529,0.20929091],[-0.0844444,0.21016325],[-0.09317361,0.21100373],[-0.10191339,0.2118113 ],[-0.11066424,0.21258489],[-0.11942668,0.21332338],[-0.12820128,0.21402557],[-0.13698863,0.2146902 ],[-0.10507277,0.20535413],#<-- point to remove
     [-0.14749565,0.21590372],[-0.15646386,0.2164481 ],[-0.16552084,0.21694332],[-0.17466738,0.2173836 ],[-0.18390426,0.21776298],[-0.19323216,0.21807525],[-0.20265175,0.21831395],[-0.21216362,0.21847237],[-0.2217683,0.21854352],[-0.23146627,0.21852011],[-0.24125792,0.21839456]
 ])

解决方法

这是一种相当强大的方法:

for i in range(1,len(data) - 1):
    backward_angle = np.arctan2(data[i][1] - data[i - 1][1],data[i][0] - data[i - 1][0])
    forward_angle = np.arctan2(data[i + 1][1] - data[i][1],data[i + 1][0] - data[i][0])
    angle_difference = (backward_angle - forward_angle + np.pi) % (2 * np.pi) - np.pi
    if np.absolute(angle_difference) > np.pi / 2:
        print "Outlier:",data[i]

它计算从前一点到当前点以及从当前点到下一点的方向.如果差值(模2π)大于pi / 2(即90度),则检测到异常值.

输出:

Outlier: [-0.13698863  0.2146902 ]
Outlier: [-0.10507277  0.20535413]

请注意,检测到两个点,因为方向有两个变化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读