2009-09-02 3 views
1

У меня есть массив массивов, как показано ниже со всеми численными значениями. Я хочу выполнить некоторые математические операции с этими значениями.Как выполнять математические операции над массивом массивов?

1) Добавить и распечатать значения для каждого элемента массива. , например.

sum $VAR1 = sum1 
sum $VAR2 = sum2 

2) Добавить все значения из каждой переменной. , например.

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

3) Обнаружение процента от общего количества каждого переменного (sum1, sum2 и т.д.) с totalsum.

$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; 

ответ

6

Я хотел бы сделать это следующим образом:

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

(редактирование: В вашем коде, вам необходимо разыменования ссылку на массив в $ вход [0].) Ответ

3

Дэйва уже охватывает простые случаи. Если вы хотите выполнить крупномасштабную обработку с использованием матричных данных, рассмотрите возможность использования модуля PDL. (В частности, начните с PDFL::Intro. Спасибо за это, Брэд)

+1

http://search.cpan.org/perldoc/PDL::Intro –

Смежные вопросы