我有:
$array->[0]->[0..4] = (1,2,3,4,5)
$array->[1]->[0..6] = (12,13,14,15,16,17,18)
$array->[2]->[0..8] = (4,5,6,7,8,9,10,11,12)
我想找到每个数组的平均值,因此结果是:
$array->[0] = 3
$array->[1] = 15
$array->[2] = 8
这只是我的数据的一个示例,但我确实有数组 0 到 72-510,每个数组包含 0 到 1-40 个元素。我当前的脚本设置为让变量 $i 勾选数组总数,变量 $j 勾选数组中的元素数量。
下面是我的脚本的基本设置。
my $sum;
my $value;
foreach (my $i = 0; $i < "Number of Arrays"; ++$i) {
for (my $j = 0; $j < "Size of Array"; ++$j) {
$value = $array->[$i]->[$j];
}
$sum += $values;
my $average = $sum / "Size of Array";
}
如果有人可以向我展示如何通过示例完成此操作,那将非常有帮助!如果我同时发现任何东西,我会更新我的问题。
最佳答案
使用List::Util
并且不使用C风格的for循环:
use strict;
use warnings;
use List::Util qw(sum);
use feature 'say';
my $array = [
[1, 2, 3, 4, 5],
[12, 13, 14, 15, 16, 17, 18],
[4, 5, 6, 7, 8, 9, 10, 11, 12],
[]
];
foreach my $sub_array (@$array) {
@$sub_array or next; # Is the array empty?
my $avg = sum(@$sub_array) / @$sub_array;
say "[@$sub_array] has average $avg";
}
关于arrays - 求多个数组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31861880/