Space
Space

Reputation: 7259

How can I perform mathematical operations on an array of arrays?

I have an array of array like below with all numeric values. I want to perform some mathematical operations with these values.

  1. Add and print the values of each array elements. e.g.

    sum $VAR1 = sum1 sum $VAR2 = sum2

  2. Add all the values from each variables. e.g.

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

  3. Finding percentage of each variable's total (sum1, sum2, etc.) with the totalsum.

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

I have tried the below code to perform addition of the first array reference, but it’s not giving me the correct values.

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

Upvotes: 1

Views: 1226

Answers (2)

tsee
tsee

Reputation: 5072

Dave's answer already covers the simple cases. If you want to do large-scale processing with matrixy data, consider using the PDL module. (Specifically, start with PDFL::Intro. Thanks for that, Brad.)

Upvotes: 3

Dave Pirotte
Dave Pirotte

Reputation: 3816

I'd do it this way:

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

(In your code, you needed to dereference the arrayref at $input[0].)

Upvotes: 6

Related Questions