Dimension reduction

Tim Hochberg tim.hochberg at ieee.org
Thu Oct 19 11:52:03 CDT 2006


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




More information about the Numpy-discussion mailing list