Provided by: pdl_2.007-5_amd64 bug

NAME

       PDL::Reduce -- a "reduce" function for PDL

DESCRIPTION

       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).

SYNOPSIS

        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

FUNCTIONS

   reduce
       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);
        $b = $a->reduce('+',1);     # three ways to do the same thing

       [ 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

       ]

       NOTE: You should quote the name of the operation (1st arg) that you want "reduce" to
       perform. This is important since some of the names are identical to the names of the
       actual PDL functions which might be imported into your namespace. And you definitely want
       a string as argument, not a function invocation! For example, this will probably fail:

         $b = $a->reduce(avg,1); # gives an error from invocation of 'avg'

       Rather use

         $b = $a->reduce('avg',1);

       "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 [,@dims]);

       "reduce" applies the named operation along the specified dimension(s) reducing the input
       piddle dimension by as many dimensions as supplied as arguments. If the dimension(s)
       argument is omitted the operation is applied along the first dimension. To get a list of
       valid operations see canreduce.

       NOTE - new power user feature: you can now supply a code reference as operation to reduce
       with.

         # reduce by summing over dims 0 and 2
         $result = $pdl->reduce(\&sumover, 0, 2);

       It is your responsibility to ensure that this is indeed a PDL projection operation that
       turns vectors into scalars!  You have been warned.

   canreduce
       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".

AUTHOR

       Copyright (C) 2000 Christian Soeller (c.soeller@auckland.ac.nz). All rights reserved.
       There is no warranty. You are allowed to redistribute this software / documentation under
       certain conditions. For details, see the file COPYING in the PDL distribution. If this
       file is separated from the PDL distribution, the copyright notice should be included in
       the file.