Robert Kern wrote: > David Huard wrote: > >> Hi, >> >> Is there an elegant way to reduce an array but conserve the reduced >> dimension ? >> >> Currently, >> >>> a = random.random((10,10,10)) >> >>> a.sum(1).shape >> (10,10) >> >> but i'd like to keep (10,1,10) so I can do a/a.sum(1) directly. >> > > def nonreducing_reducer(reducing_func, arr, axis): > reduced = reducing_func(arr, axis=axis) > shape = list(reduced.shape) > axis = axis % len(arr.shape) > shape.insert(axis, 1) > reduced.shape = tuple(shape) > return reduced > > > I think. > > Alternatively (untested):
def nonreducing_reducer(reducing_func, arr, axis): return reducing_func(arr.swapaxis(0, axis), axis=0)[newaxis].swapaxis(0, axis) Adding some vertical whitespace probably wouldn't hurt for readability I suppose. -tim ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Numpy-discussion mailing list Numpy-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/numpy-discussion