【发布时间】:2022-01-14 09:47:13
【问题描述】:
我正在学习 Perl,需要帮助对数据求和,从数据结构中的第 3 步(前三个数字 0,2.2,0.5 然后接下来的三个数字 0.4,0.2,0.2,...等)(查看示例数据) )。
'max' => [ 6,
0.8,
.
.
.
.
.
. ]
示例: 这是数据结构(哈希):
my $var1 = {
"datetime" => [
1592049600,
1592053200,
1592056800,
1592060400,
1592064000,
1592067600,
1592071200,
1592074800,
1592078400,
1592082000,
1592085600,
1592089200,
1592092800,
1592096400,
1592100000,
1592103600,
1592107200,
1592110800,
1592114400,
1592118000,
1592121600,
1592125200,
1592128800,
1592132400,
1592136000
],
"max" => [
0,
2.2,
0.5,
0.4,
0.2,
0.2,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
};
'datetime' 是时间序列,'max' 是该时间段的最大降水量(在我的示例中为 1h 最大值总计)。
基本上,我想从 1 小时降水总量创建 3 小时降水总量。然后,我会这样做,但周期为 6 小时,以获得 6 小时的总降水量。
我希望我现在清楚
更新有效的完整代码:
my $maxes = $var1->{max};
print "size of array: $#$maxes\n";
my @sums_2h;
for my $i (0..$#$maxes) {
$sums_2h[$i/2] += $maxes->[$i];
}
my $max_2h = max(@sums_2h);
print "2h precipitation sum: @sums_2h\n";
print "2h precipitation max: $max_2h\n";
my @sums_3h;
for my $i (0..$#$maxes) {
$sums_3h[$i/3] += $maxes->[$i];
}
my $max_3h = max(@sums_3h);
print "3h precipitation sum: @sums_3h\n";
print "3h precipitation max: $max_3h\n";
my @sums_6h;
for my $i (0..$#$maxes) {
$sums_6h[$i/6] += $maxes->[$i];
}
my $max_6h = max(@sums_6h);
print "6h precipitation sum: @sums_6h\n";
print "6h precipitation max: $max_6h\n";
my @sums_12h;
for my $i (0..$#$maxes) {
$sums_12h[$i/12] += $maxes->[$i];
}
my $max_12h = max(@sums_12h);
print "12h precipitation sum: @sums_12h\n";
print "12h precipitation max: $max_12h\n";
my @sums_24h;
for my $i (0..$#$maxes) {
$sums_24h[$i/24] += $maxes->[$i];
}
my $max_24h = max(@sums_24h);
print "24h precipitation sum: @sums_24h\n";
print "24h precipitation max: $max_24h\n";
【问题讨论】:
-
my @array = (1,2,3,4);,顺便说一句。方括号构成一个数组引用,而不是一个列表。 -
嗯,这个问题没有什么不清楚的地方。
-
你尝试了什么?你能告诉我们你的代码吗?
-
是的,代码已添加。
-
@meteorolog 看不到您问题中的代码。只有输入数据在这里无济于事。请edit问题并添加您尝试过的所需代码/脚本。