我怎样才能写一个循环来丢弃离平均值太远的值?
How can I write a loop to discard values that are too far from the mean value?
在我的代码中,我输入了一些数据点,它输出了数据点之间的间隔数组:例如,[92 97 97 99 99 99 97 97 98 97 99 98 95]
如果有一个值比间隔的平均值小或大 20%,我希望它打印 'Intervals are irregular'。如果没有比间隔平均值小或大 20% 的值,我希望它打印 'intervals are not irregular'.
我以这种方式计算值的平均值:
averageinterval = np.mean(intervals)
然后我试着写了一个for循环:
for interval in intervals:
if interval is 20% > averageinterval:
print('intervals are irregular')
这给出了语法错误。如何正确编写此循环?
Python 中没有百分比运算符,您需要定义一个从平均间隔中获取百分比的方法。
示例:
def percentage(part, whole):
return float(part)/ float(whole) * 100
试试这个:
def check_regularity(intervals):
average = intervals.mean()
regular = all(intervals < average * 1.2) and all(intervals > average * 0.8)
print(f'The intervals are {"not " * regular}irregular.')
check_regularity(np.array([92, 97, 97, 99, 99, 99, 97, 97, 98, 97, 99, 98, 95]))
check_regularity(np.array([92, 97, 37, 99, 99, 99, 97, 97, 98, 97, 99, 98, 95]))
输出:
The intervals are not irregular.
The intervals are irregular.
如果您只想提取该范围内的值,那么您应该这样做:
average = intervals.mean()
regular_intervals = intervals[(intervals < average * 1.2) & (intervals > average * 0.8)]
这是附加信息:在我看来,您可能正在寻找异常值检查。如果是这种情况:您可能想要测试 MEDIAN 值偏差的东西,因为平均值会受到异常值的强烈影响:我可以推荐 1
Joe Kington 的回答。
在我的代码中,我输入了一些数据点,它输出了数据点之间的间隔数组:例如,[92 97 97 99 99 99 97 97 98 97 99 98 95]
如果有一个值比间隔的平均值小或大 20%,我希望它打印 'Intervals are irregular'。如果没有比间隔平均值小或大 20% 的值,我希望它打印 'intervals are not irregular'.
我以这种方式计算值的平均值:
averageinterval = np.mean(intervals)
然后我试着写了一个for循环:
for interval in intervals:
if interval is 20% > averageinterval:
print('intervals are irregular')
这给出了语法错误。如何正确编写此循环?
Python 中没有百分比运算符,您需要定义一个从平均间隔中获取百分比的方法。
示例:
def percentage(part, whole):
return float(part)/ float(whole) * 100
试试这个:
def check_regularity(intervals):
average = intervals.mean()
regular = all(intervals < average * 1.2) and all(intervals > average * 0.8)
print(f'The intervals are {"not " * regular}irregular.')
check_regularity(np.array([92, 97, 97, 99, 99, 99, 97, 97, 98, 97, 99, 98, 95]))
check_regularity(np.array([92, 97, 37, 99, 99, 99, 97, 97, 98, 97, 99, 98, 95]))
输出:
The intervals are not irregular.
The intervals are irregular.
如果您只想提取该范围内的值,那么您应该这样做:
average = intervals.mean()
regular_intervals = intervals[(intervals < average * 1.2) & (intervals > average * 0.8)]
这是附加信息:在我看来,您可能正在寻找异常值检查。如果是这种情况:您可能想要测试 MEDIAN 值偏差的东西,因为平均值会受到异常值的强烈影响:我可以推荐 1 Joe Kington 的回答。