如何编写循环以丢弃与平均值相差太远的值?

2024-09-30 16:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的代码中,我输入一些数据点,然后它输出数据点之间的间隔数组:例如[92 97 97 99 99 99 97 97 98 97 99 98 95]

如果有一个值小于或大于间隔平均值的20%,我希望它打印“间隔不规则”。如果没有小于或大于间隔平均值20%的值,我希望它打印“间隔不是不规则的”。你知道吗

我用这种方法计算这些值的平均值:

averageinterval = np.mean(intervals)

然后我试着写一个for循环:

for interval in intervals:
    if interval is 20% > averageinterval:
        print('intervals are irregular')

这会导致语法错误。如何正确地编写此循环?你知道吗


Tags: 数据方法代码infor间隔ifis
3条回答

试试这个:

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)]

Python中没有百分比操作符,您需要定义一个从averageinterval中获取百分比的方法。你知道吗

示例:

def percentage(part, whole):
  return float(part)/ float(whole) * 100

这是额外的信息:在我看来,您可能正在寻找异常值检查。如果是这样的话:您可能想要测试中值的偏差,因为平均值会受到异常值的强烈影响:我可以推荐1 乔·金顿的答案。你知道吗

相关问题 更多 >