如何获取数组中最新n个数值的平均值?(电池电压监测场景)
解决数组最后100个元素的平均值计算问题
嘿,这个需求用Python的列表切片就能轻松搞定,我来给你详细说下:
核心语法:列表切片取最后100个元素
在Python中,要获取列表的最后N个元素,直接用列表[-N:]的切片语法就行。对你的场景来说,就是用yar[-100:]来获取电压数组的最后100条读数——哪怕数组长度还没到100,这个切片也会返回整个数组,完美兼容两种情况。
结合你的代码修改
把你原来计算平均值的代码替换成下面的写法,就能实现“超过100条时取最后100条的平均值,不足时取全部”的逻辑:
if len(yar) > 1: # 计算最后100条(或全部)数据的平均值 recent_average = np.mean(yar[-100:]) # 更新标题显示,用:.2f格式化保留两位小数(可选) plt.title(f"Voltage: {yar[-1]} | Average (last 100): {recent_average:.2f}")
进阶:区分数据量的显示(可选)
如果你想在数据不足100条时明确提示,也可以加个简单的判断:
if len(yar) > 1: if len(yar) >= 100: avg_value = np.mean(yar[-100:]) avg_label = f"Average (last 100): {avg_value:.2f}" else: avg_value = np.mean(yar) avg_label = f"Average (all {len(yar)}): {avg_value:.2f}" plt.title(f"Voltage: {yar[-1]} | {avg_label}")
这样能让标题显示更清晰,用户一眼就能知道当前平均值的计算范围。
内容的提问来源于stack exchange,提问作者I_Literally_Cannot
相关产品推荐
相关产品推荐

