为了账号安全,请及时绑定邮箱和手机立即绑定

如何选择范围内的数据

如何选择范围内的数据

子衿沉夜 2021-07-20 17:03:57
假设我有一些循环数据 [min >= 0, max < 360],data = np.array([355.9,  2.47 ,  30.52, 5.33, 40.22, 340.22])这些数据的圆形平均值是 9我想按+- 15度选择平均值周围的数据。因此,所选数据将为new_data = [355.9,  2.47 ,  5.33]。所选数据介于[low=9-15, high=9+15] = [354, 24]我试过的是def remove_outliers(angles, mean, extend):    high = (mean + extend) - 360 if (mean + extend)>360 else (mean + extend)    low = (mean - extend) + 360 if (mean - extend)<0 else (mean - extend)    angles = angles[angles>=low]    angles = angles[angles<=high]    return angleshigh = 24,low = 354但下一部分是错误的angles = angles[angles>=low] # this is wrongangles = angles[angles<=high] # this is wrongremove_outliers(data, 9, 15) # gives empty array如果平均值高于15或低于345,该函数将起作用extend = 15。
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

根据您的需要,当低 > 高时,条件应该是angles>=lowOR angles<=high,而不是angles>=lowAND angles<=high。您还可以使用该np.mod函数获取高值和低值。


我会写:


import numpy as np


def remove_outliers(angles, mean, extend):

    high = np.mod(mean+extend,360)

    low = np.mod(mean-extend,360)

    if high < low:

        return angles[(angles<=high) | (angles>=low)]

    else:

        return angles[(angles<=high) & (angles>=low)]



data = np.array([355.9,  2.47 ,  30.52, 5.33, 40.22, 340.22])



correct_angles = remove_outliers(data, 9, 15)


查看完整回答
反对 回复 2021-07-28
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号