Python中文
首页
教程
问答
标签
搜索
登录
注册
查找平均值,但忽略列表中的任何零[Python]
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个温度数据的文本文件,如下所示:</p> <pre><code>3438012868.0 0.0 21.7 22.6 22.5 22.5 21.2 3438012875.0 0.0 21.6 22.6 22.5 22.5 21.2 3438012881.9 0.0 21.7 22.5 22.5 22.5 21.2 3438012888.9 0.0 21.6 22.6 22.5 22.5 21.2 3438012895.8 0.0 21.6 22.5 22.6 22.5 21.3 3438012902.8 0.0 21.6 22.5 22.5 22.5 21.2 3438012909.7 0.0 21.6 22.5 22.5 22.5 21.2 3438012916.6 0.0 21.6 22.5 22.5 22.5 21.2 3438012923.6 0.0 21.6 22.6 22.5 22.5 21.2 3438012930.5 0.0 21.6 22.5 22.5 22.5 21.2 3438012937.5 0.0 21.7 22.5 22.5 22.5 21.2 3438012944.5 0.0 21.6 22.5 22.5 22.5 21.3 3438012951.4 0.0 21.6 22.5 22.5 22.5 21.2 3438012958.4 0.0 21.6 22.5 22.5 22.5 21.3 3438012965.3 0.0 21.6 22.6 22.5 22.5 21.2 3438012972.3 0.0 21.6 22.5 22.5 22.5 21.3 3438012979.2 0.0 21.6 22.6 22.5 22.5 21.2 3438012986.1 0.0 21.6 22.5 22.5 22.5 21.3 3438012993.1 0.0 21.6 22.5 22.6 22.5 21.2 3438013000.0 0.0 21.6 0.0 22.5 22.5 21.3 3438013006.9 0.0 21.6 22.6 22.5 22.5 21.2 3438013014.4 0.0 21.6 22.5 22.5 22.5 21.3 3438013021.9 0.0 21.6 22.5 22.5 22.5 21.3 3438013029.9 0.0 21.6 22.5 22.5 22.5 21.2 3438013036.9 0.0 21.6 22.6 22.5 22.5 21.2 3438013044.6 0.0 21.6 22.5 22.5 22.5 21.2 </code></pre> <p>但整个文件要长得多,这是前几行。第一列是时间戳,接下来的6列是温度记录。我需要写一个循环,找到6个测量值的平均值,但忽略0.0的测量值,因为这只是意味着传感器没有打开。在后面的测量中,第一列有一个测量值。有没有办法让我写一个if语句,或者用另一种方法只求列表中非零数字的平均值?现在,我有:</p> <pre><code>time = [] t1 = [] t2 = [] t3 = [] t4 = [] t5 = [] t6 = [] newdate = [] temps = open('file_path','r') sepfile = temps.read().replace('\n','').split('\r') temps.close() for plotpair in sepfile: data = plotpair.split('\t') time.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(float(data[0])) t1.append(float(data[1])) t2.append(float(data[2])) t3.append(float(data[3])) t4.append(float(data[4])) t5.append(float(data[5])) t6.append(float(data[6])) for data_seconds in time: date = datetime(1904,1,1,5,26,02) delta = timedelta(seconds=data_seconds) newdate.append(date+delta) for datapoint in t2,t3,t4,t5,t6: temperatures = np.array([t2,t3,t4,t5,t6]).mean(0).tolist() </code></pre> <p>只找到最近5次测量的平均值。我希望找到一个更好的方法,它可以忽略0.0,并在第一列非0时包含它。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>可以使用<a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.tmean.html#scipy.stats.tmean" rel="nofollow">scipy.stats.tmean</a>生成截断/修剪平均值</p> <p>或者在将float(data[X])附加到相应的列表之前,可以检查它是否等于0</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
2 回答
无法使用Django\u mssql\u后端迁移到外部hos
7 回答
无法使用Django&Python3.4连接到MySql
7 回答
无法使用Django+nginx上载媒体文件
6 回答
无法使用Django1.6导入名称模式
5 回答
无法使用Django1.7和mongodb登录管理站点
1 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
7 回答
无法使用Djangockedi验证CBV中的字段
9 回答
无法使用Djangocketditor上载图像(错误400)
10 回答
无法使用Djangocron进行函数调用
7 回答
无法使用Djangofiler djang上载文件
10 回答
无法使用Djangokronos
4 回答
无法使用Djangomssql provid
5 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
9 回答
无法使用Djangomssq迁移Django数据库
6 回答
无法使用Djangonox创建用户
6 回答
无法使用Djangopyodb从Django查询SQL Server
5 回答
无法使用Djangopython3ldap连接到ldap
4 回答
无法使用Djangoredis连接到redis
1 回答
无法使用Django中的FK创建新表
7 回答