是否有一个优雅的 PDL 函数,它接收一个值列表并返回一个包含 80% 的最低原始值的列表?
例如:
如果我有这样的列表: (9, 4, 1, 2, 7, 8, 3, 5, 6, 10)
在原始列表上调用此函数后,我想得到 (1, 2, 3, 4, 5, 6, 7, 8) (值的顺序无关紧要 - 不需要对值进行排序)。
我发现 PDL::Ufunc::oddpct 可以返回第 80 个百分位数,但我想获得该百分位数的值列表。我可以自己做,但如果有一些开箱即用的东西 - 为什么不使用它?
谢谢!!!
最佳答案
我建议你使用 pct
得到第 80 个百分位数,结合 where
原语选择低于该值的所有内容。使用您自己的数据看起来像这样
use strict;
use warnings;
use PDL;
my $list = pdl(9, 4, 1, 2, 7, 8, 3, 5, 6, 10);
print qsort $list->where($list <= $list->pct(80/100));
输出
[1 2 3 4 5 6 7 8]
关于Perl PDL - 获取向量中 80% 的最低值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9514644/