PDL::Reduce -- a reduce
function for PDL
Many languages have a reduce
function used to reduce
the rank of an N-D array by one. It works by applying a selected
operation along a specified dimension. This module implements
such a function for PDL by providing a simplified interface
to the existing projection functions (e.g. sumover
,
maximum
, average
, etc).
use PDL::Reduce; $a = sequence 5,5; # reduce by adding all # elements along 2nd dimension $b = $a->reduce(add,1); @ops = $a->canreduce; # return a list of all allowed operations
reduce dimension of piddle by one by applying an operation along the specified dimension
$a = sequence 5,5; # reduce by adding all # elements along 2nd dimension $b = $a->reduce(add,1); $b = $a->reduce(plus,1);
[ As an aside: if you are familiar with threading you will see that this is actually the same as
$b = $a->mv(1,0)->sumover
]
reduce
provides a simple and unified interface to the
projection functions and makes people coming from other
data/array languages hopefully feel more at home.
$result = $pdl->reduce($operation [,$dim]);
reduce
applies the named operation along the specified
dimension reducing the input piddle dimension by one. If the
dimension is omitted the operation is applied along the first
dimension. To get a list of valid operations see the canreduce manpage.
return list of valid named reduce
operations
Some common operations can be accessed using a
number of names, e.g. '+'
, add
and plus
all sum the elements along the chosen dimension.
@ops = PDL->canreduce;
This list is useful if you want to make sure which
operations can be used with reduce
.