在我的代码中,我输入了一些数据点,并输出了数据点之间的间隔数组:例如[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')
这给出了语法错误。如何正确编写此循环?
答案 0 :(得分:1)
尝试一下:
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)]
答案 1 :(得分:0)
这是其他信息:在我看来,您可能正在寻找异常值检查。如果是这样的话:您可能需要某种测试MEDIAN值偏差的方法,因为均值会受到离群值的太大影响:我可以推荐1 Joe Kington的答案。
答案 2 :(得分:-2)
Python中没有百分比运算符,您需要定义一个从averageinterval获取百分比的方法。
示例:
def percentage(part, whole):
return float(part)/ float(whole) * 100