将PDL标量转换为Perl标量

5

我有一个使用PDL的函数。最后一步是点积,因此返回一个标量。然而,当我尝试打印这个标量时,它显然仍然是一个piddle,并且在屏幕上打印出来像这样:

[
  [ 3 ]
]

我想知道如何将其转换回常规的Perl标量,以便打印如下:
3 

更重要的是,如果我不将其转换并在纯Perl上下文中进行进一步算术操作(不涉及PDL),会有什么后果。谢谢!

2个回答

5

使用sclr方法,将具有任意维度的单元素PDL矩阵转换为简单的Perl标量

my $dotp = sclr($mata x $matb);

1
为了回答第二个问题(“如果我不进行转换并在纯Perl环境中进行进一步的算术操作(不涉及PDL),会有什么后果”),有两个主要考虑因素:
  • PDL实体(“ndarrays”)具有重载算术,因此与它们一起使用的任何Perl标量都将被升级,并且结果也将是ndarray。对于标量(单个元素)ndarray来说,这可能是不必要的,因为PDL操作会导致性能下降,而这对于一个单独的元素来说并不值得。
  • 示例中显示的ndarray只有一个元素,但它是二维的(1x1)。为了成为适当的标量ndarray,您需要执行 $dotp->squeeze 以删除所有长度为1的维度

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接