在这里插入图片描述

题目: 滑动窗口平均值 (Python)

给定一个数字列表 nums 和一个整数 window_size,编写一个函数 moving_window 来计算滑动窗口平均值。

示例 1:

输入:

nums = [1,2,3,4,5,6]
window_size = 3

输出:

def moving_window(input, window_size) -> [1, 1.5, 2, 3, 4, 5]

示例 2:

输入:

nums = [1,2,3,4,5,6]
window_size = 4

输出:

def moving_window(input, window_size) -> [1, 1.5, 2, 2.5, 3.5, 4.5]

答案

解题思路

这个问题的关键在于计算给定窗口大小内的数字平均值。当窗口大小较小时,窗口内的元素个数会少于窗口大小,因此计算平均值时应考虑实际元素个数。

答案代码

def moving_window(nums, window_size):
    result = []
    
    # 遍历每个元素,计算滑动窗口的平均值
    for i in range(len(nums)):
        if i < window_size - 1:
            # 当前窗口内的实际元素数量为 i + 1
            current_window_size = i + 1
            # 当前窗口内的元素和为 nums 列表中前 i + 1 个元素的和
            current_window_sum = sum(nums[:i+1])
        else:
            # 当前窗口内的实际元素数量为 window_size
            current_window_size = window_size
            # 当前窗口内的元素和为从 (i - window_size + 1) 到 i 的元素的和
            current_window_sum = sum(nums[i-window_size+1:i+1])
        
        # 计算当前窗口的平均值
        current_window_average = current_window_sum / current_window_size
        # 将计算的平均值添加到结果列表 result 中
        result.append(current_window_average)
    
    return result

# 示例 1
nums1 = [1,2,3,4,5,6]
window_size1 = 3
print(moving_window(nums1, window_size1))

# 示例 2
nums2 = [1,2,3,4,5,6]
window_size2 = 4
print(moving_window(nums2, window_size2))
  • for i in range(len(nums)): 遍历输入的数字列表。
  • if i < window_size - 1: ……else: …… : 判断当前索引是否小于窗口大小减一,以确定窗口内的实际元素数量。
  • 如果小于窗口,计算前i+1个元素和;否则,按指定的窗口大小计算。

如果这是一道SQL题目……

如果题目是一道SQL题目,要求你使用sql语言完成同样的计算,你的答案是什么?

更多详细答案可见原文链接关注公众号查阅。
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐