python 列表有大量元素,每6个数据求一个平均值,并返回给列表用于生成新的列表
背景:arm9的单板默认用的Linux操作系统的top命令每5秒刷新一次,但是每5秒取一次数据,cpu的使用率会出现瞬高瞬低,导致且数据过多,因为上下幅度太大很难看出来趋势,但是又不能重新用top -d 30 抓数据,因此要对已有数据进行重新画图,这是其中一个部分的想法
方法:对抓到的数据进行处理,很6个一组,每组都换成6个元素的平均值,把这个处理封装成一个函数,就不用每次用top记录数据的时候输入-d 30的参数了
代码:
1 #coding:utf-8 2 def new_list(list): 3 import numpy as np #导入numpy库 4 n = len(list)%6 5 while n: #对于最后的几个数丢弃,不丢弃的话无法组成二维数组 6 list.pop() 7 n -= 1 8 m = len(list)/6 #m是二维数组的0轴 9 arr = np.array(list).reshape(m,6) #arr是一个形状为【m,6】的数组 10 avg = np.mean(arr,axis=1) #求出每行的平均值 11 for i in range(0,avg.size): #把每行的平均值赋值给这一行 12 arr[i] = avg[i] 13 return arr.reshape(1,arr.size)[0] #返回一个列表
代码最后还是用到了循环,也用到数组的广播
浙公网安备 33010602011771号