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]    #返回一个列表

代码最后还是用到了循环,也用到数组的广播

posted on 2017-01-14 21:58  天涯旅馆  阅读(2614)  评论(0)    收藏  举报

导航