【数据分析面试】60.计算滑动窗口平均值 (Python & SQL)
给定一个数字列表 `nums` 和一个整数 `window_size`,编写一个函数 `moving_window` 来计算滑动窗口平均值。
·
题目: 滑动窗口平均值 (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语言完成同样的计算,你的答案是什么?
更多详细答案可见原文链接关注公众号查阅。

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