Perl PDL是否有一种方法可以通过在另一个向量中给定的最小/最大值来钳位一个向量而不进行迭代?

p4rjhz4m  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(133)

PDL是否已经有一种方法可以将向量元素“钳制”到另一个向量中给定的最小/最大值?我已经浏览了PDL::Math文档,但没有看到一个好的候选选项。
I could unpdl/re-pdl,但这似乎开销太大。
是否已经有矢量化的方法来实现这一点?
我试过这样的方法:

$pdl = pdl [4.45, 5.55, 45];
$max = pdl [2   , 3,    50];
print ( (($max <=> $pdl) > 0)*$pdl + (($max <=> $pdl) < 0)*$max ) 
[2 3 45]

这看起来是可行的,但这是一个多么疯狂的表达式。有内置的吗?

kb5ga3dv

kb5ga3dv1#

PDL::Primitive::hclip是针对以下情况:

pdl> $pdl = pdl [4.45, 5.55, 45];
pdl> $max = pdl [2   , 3,    50];
pdl> p $pdl->hclip($max)
[2 3 45]

相关问题