From: Pierre GM <pgm...@gm...> - 2006-11-12 23:09:50
|
On Sunday 12 November 2006 17:08, A. M. Archibald wrote: > On 12/11/06, Keith Goodman <kwg...@gm...> wrote: > > Is anybody interested in making x.max() and nanmax() behave the same > > for matrices, except for the NaN part? That is, make > > numpy.matlib.nanmax return a matrix instead of an array. Or, you could use masked arrays... In the new implementation, you can add a mask to a subclassed array (such as matrix) to get a regular masked array. If you fill this masked array, you get an array of the same subclass. >>> import numpy as N >>> import numpy.matlib as M >>> import maskedarray as MA >>> x=M.rand(3,3) >>> assert isinstance(x.max(0), M.matrix) >>> assert isinstance(N.max(x,0), M.matrix) >>> assert isinstance(MA.max(x,0).filled(0), M.matrix) >>> assert isinstance(MA.max(x,0)._data, M.matrix) >>> x[-1,-1] = N.nan >>> tmp = MA.max(MA.array(x,mask=N.isnan(x)), 0) >>> assert (tmp == N.nanmax(x,0)).all() >>> assert isinstance(tmp.filled(0), M.matrix) |