如何对阵列数组执行数学运算?

时间:2009-09-02 12:11:28

标签: perl arrays

我有一个如下数组的数组,包含所有数值。我想用这些值执行一些数学运算。

1)添加并打印每个数组元素的值。 e.g。

sum $VAR1 = sum1
sum $VAR2 = sum2

2)添加每个变量的所有值。 e.g。

sum $VAR1 + $VAR2 +...+ $VARn = totalsum

3)找出每个变量总数(sum1sum2等)与总数的百分比。

$VAR1 = [
          '17071',
          '16120',
          '16292',
    'upto n numbers'
        ];
$VAR2 = [
          '1306',
          '1399',
          '1420',
    'upto n numbers'
        ];  
.
.
.
$VARn = [
          '1835',
          '1946',
    'upto n numbers'
        ];  

我尝试过以下代码来执行第一个数组ref的添加,但它没有给我正确的值。

my $total = 0;
($total+=$_) for $input[0];
print $total;

2 个答案:

答案 0 :(得分:6)

我这样做:

use List::Util qw(sum)
my @sums = map { sum(@{$_}) } @array;
my $sum_of_sums = sum(@sums);
my @percentages = map { $_ / $sum_of_sums } @sums;

(编辑:在你的代码中,你需要在$ input [0]处取消引用arrayref。)

答案 1 :(得分:3)

戴夫的回答已经涵盖了简单的案例。如果要使用矩阵数据进行大规模处理,请考虑使用PDL模块。 (具体来说,从PDFL::Intro开始。感谢,Brad)