Gnuplot如何手动遍历文件数据并计算求和与平均值?
手动计算数据文件的总和与平均值
嘿,我看你想处理mydata文件里的数值,手动求和再算平均值,但当前代码的逻辑没正确读取到文件内容,我来帮你修正下~
原代码的核心问题
你写的do for [i in "mydata"]是在循环字符串"mydata"这几个字符,根本没读取到文件里的1、2、3这些数值,而且硬编码除以6也不够灵活——万一以后文件里的数值数量变了,结果直接就错了。
修正后的Bash脚本实现
假设你用的是Bash环境,正确的写法应该是这样:
sum=0 count=0 # 读取文件内容,按空格拆分每个数值 for num in $(cat mydata); do sum=$((sum + num)) # 累加数值 count=$((count + 1)) # 统计数值个数 done # 用bc处理浮点数,scale=2表示保留两位小数 average=$(echo "scale=2; $sum / $count" | bc) echo "总和:$sum" echo "平均值:$average"
运行结果
你的mydata内容是1 2 3 4 5 6,运行后会得到:
- 总和:21
- 平均值:3.5
哦对了,你提到预期结果是6,会不会是把总和和平均值搞混啦?或者是想算其他值?如果是中间值的话,这个数据集的中间值是3.5(因为是偶数个数值),6是最后一个数哦~
如果你用Python的话,也可以这么写
如果更习惯用Python,代码会更简洁:
with open('mydata', 'r') as f: nums = list(map(int, f.read().split())) total = sum(nums) average = total / len(nums) print(f"总和:{total}") print(f"平均值:{average}")
内容的提问来源于stack exchange,提问作者TheTrowser
相关产品推荐
相关产品推荐

