[Numpy-discussion] Generically Creating Views of Equal Dimensions

Robert Kern robert.kern at gmail.com
Tue Apr 15 15:38:42 EDT 2008


On Tue, Apr 15, 2008 at 9:54 AM, Alexander Michael <lxander.m at gmail.com> wrote:
> Is there an already existing method to create views that add as many
>  dimensions as required to bring a collection of arrays to the same
>  dimensionality by adding the appropriate number of numpy.newaxis's to
>  the ends? For example:

The usual broadcasting rule goes the other way; newaxis's are
*prepended* to the beginning of the shape. I wouldn't put a function
into numpy to do something the opposite of that convention and risk
confusing people. However, if you would like a utility function for
your own code:


from numpy import newaxis

def dimensionalize(a, b):
    """ Try to make the ranks of two arrays compatible for
    broadcasting by *appending* new axes.

    This is the opposite of the usual broadcasting convention which
    *prepends* new axes.
    """
    ranka = len(a.shape)
    rankb = len(b.shape)
    if ranka > rankb:
        b = b[(Ellipsis,)+(newaxis,)*(ranka-rankb)]
    elif rankb > ranka:
        a = a[(Ellipsis,)+(newaxis,)*(rankb-ranka)]
    return a, b

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
 -- Umberto Eco



More information about the NumPy-Discussion mailing list