免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5148 | 回复: 13
打印 上一主题 下一主题

数值计算 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-08 23:48 |只看该作者 |正序浏览
各位亲,现在有一个计算平均值的问题,有一个数组
比如这个@orig=(1,2,3,3,2,1,3,3,3),想计算这个数组中每三个元素的平均值,结果输出到@end,即结果应该为@end=(2,2,3)

而我现在有一个49950个元素的数组
@num=(20,30,30....)
这个数组里有49950个元素,现在想从前往后依次计算下每999个元素的平均值,这样就会产生50个平均值,然后输出到@mean数组中,不知道该怎么做比较好。

论坛徽章:
1
金牛座
日期:2014-08-10 21:59:41
14 [报告]
发表于 2014-09-20 19:25 |只看该作者
  1. #!/usr/bin/perl
  2. use v5.18.2;

  3. my @mean;
  4. while(<DATA>){
  5.         state ($num, $total);
  6.         $total += $_;
  7.         $num++;
  8.         if($num == 999) {
  9.                 push @mean, $total / 999;
  10.                 $num = 0;
  11.                 $total = 0;
  12.         }
  13. }
  14. say $_ for @mean;
复制代码
练习一下

论坛徽章:
0
13 [报告]
发表于 2014-09-13 20:59 |只看该作者
回复 12# felix0608

{:3_189:}
   

论坛徽章:
0
12 [报告]
发表于 2014-09-10 01:38 |只看该作者
  1. perl  -le  '@a=map{$_ *= 10;}(2..49951);for($i=0;$i<@a/999;$i++){$sum=0;$sum+=$_ for@a[$i*999 ..(($i+1)*999-1)];$out[$i]=$sum/999};print $_ for@out;'
复制代码
回复 1# codeternity


   

论坛徽章:
0
11 [报告]
发表于 2014-09-09 16:22 |只看该作者
回复 7# q1208c

我试了试stanley_tam的方法,可以,行得通
   

论坛徽章:
0
10 [报告]
发表于 2014-09-09 16:21 |只看该作者
回复 6# afukada
哦!!!又是一行代码,佩服!

   

论坛徽章:
0
9
发表于 2014-09-09 16:20
回复 5# stanley_tam
这样子是可以的,多谢了,学习了……

   

论坛徽章:
0
8
发表于 2014-09-09 16:20
回复 4# huang6894
大侠,这个结果是不是有太对呢……

   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
7 [报告]
发表于 2014-09-09 12:40 |只看该作者
只能用 shift, 否则会 OOM 的. 你的数组太大了.

论坛徽章:
0
6 [报告]
发表于 2014-09-09 11:16 |只看该作者
本帖最后由 afukada 于 2014-09-09 11:17 编辑
  1. @mean=map{eval(join("+,",@num[(50*$_)..(50*$_+998)]))/999}(0..49)
复制代码
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP