猿问

如何选择范围内的数据

假设我有一些循环数据 [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 angles

high = 24,low = 354但下一部分是错误的


angles = angles[angles>=low] # this is wrong

angles = angles[angles<=high] # this is wrong


remove_outliers(data, 9, 15) # gives empty array

如果平均值高于15或低于345,该函数将起作用extend = 15。


子衿沉夜
浏览 149回答 1
1回答

米脂

根据您的需要,当低 > 高时,条件应该是angles>=lowOR angles<=high,而不是angles>=lowAND angles<=high。您还可以使用该np.mod函数获取高值和低值。我会写:import numpy as npdef remove_outliers(angles, mean, extend):&nbsp; &nbsp; high = np.mod(mean+extend,360)&nbsp; &nbsp; low = np.mod(mean-extend,360)&nbsp; &nbsp; if high < low:&nbsp; &nbsp; &nbsp; &nbsp; return angles[(angles<=high) | (angles>=low)]&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; return angles[(angles<=high) & (angles>=low)]data = np.array([355.9,&nbsp; 2.47 ,&nbsp; 30.52, 5.33, 40.22, 340.22])correct_angles = remove_outliers(data, 9, 15)
随时随地看视频慕课网APP

相关分类

Python
我要回答