如何根据幅度大小和阈值将一个阵列拆分为两个独立的阵列?

you*_*ego 0 statistics perl

我有一个数组,其中包含大数字和小数字.我从WireShark运行日志后得到了它.

这就是数组的外观(对于字节发送):

@Array=qw(10912980
10924534
10913356
10910304
10920426
10900658
10911266
10912088
10928972
10914718
10920770
10897774
10934258
10882186
10874126
8531
8217
3876
8147
8019
68157
3432
3350
3338
3280
3280
7845
7869
3072
3002
2828
8397
1328
1280
1240
1194
1193
1192
1194
6440
1148
1218
4236
1161
1100
1102
1148
1172
6305
1010
5437
3534
4623
4669
3617
4234
959
1121
1121
1075
3122
3076
1020
3030
628
2938
2938
1611
1611
1541
1541
1541
1541
1541
1541
1541
1541
1541
1541
1541
1541
583
370
178)
Run Code Online (Sandbox Code Playgroud)

仔细观察这些阵列时,有一件事对人眼来说是显而易见的.实际上有大数字和小数字.我想将数组拆分为两个不同的数组.那需要我设定一个门槛.数组1应该只是大数字(10924534-10874126),数组2应该是较小的数字(68157-178).顺便说一下,数组没有排序.用户不会输入阈值,因此应该巧妙地确定.

你能帮助我吗?

ike*_*ami 6

一旦你有了门槛,你所需要的只是有效地分裂两个:

my (@hi, @lo);
push @{ $_ >= $threshold ? \@hi, \@lo }, $_ for @Array;
Run Code Online (Sandbox Code Playgroud)

它应该比每个元素调用一次grepmap回调两次快得多.

对不起,这不是一个完整的答案.