[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