Thanks, I didn't know you could specify the out array :) (to the OP: my initial suggestion, although probably not very efficient, seems to work with 2D arrays too, so I have no idea why it didn't work for you -- but Nathaniel's one seems to be the ideal one anyway).
-=- Olivier 2011/12/6 Nathaniel Smith <n...@pobox.com> > I think you want > np.maximum(a, b, out=a) > > - Nathaniel > On Dec 6, 2011 9:04 PM, "questions anon" <questions.a...@gmail.com> wrote: > >> thanks for responding Josef but that is not really what I am looking for, >> I have a multidimensional array and if the next array has any values >> greater than what is in my first array I want to replace them. The data are >> contained in netcdf files. >> I can achieve what I want if I combine all of my arrays using numpy >> concatenate and then using the command numpy.max(myarray, axis=0) but >> because I have so many arrays I end up with a memory error so I need to >> find a way to get the maximum while looping. >> >> >> >> On Wed, Dec 7, 2011 at 12:36 PM, <josef.p...@gmail.com> wrote: >> >>> On Tue, Dec 6, 2011 at 7:55 PM, Olivier Delalleau <sh...@keba.be> wrote: >>> > It may not be the most efficient way to do this, but you can do: >>> > mask = b > a >>> > a[mask] = b[mask] >>> > >>> > -=- Olivier >>> > >>> > 2011/12/6 questions anon <questions.a...@gmail.com> >>> >> >>> >> I would like to produce an array with the maximum values out of many >>> >> (10000s) of arrays. >>> >> I need to loop through many multidimentional arrays and if a value is >>> >> larger (in the same place as the previous array) then I would like >>> that >>> >> value to replace it. >>> >> >>> >> e.g. >>> >> a=[1,1,2,2 >>> >> 11,2,2 >>> >> 1,1,2,2] >>> >> b=[1,1,3,2 >>> >> 2,1,0,0 >>> >> 1,1,2,0] >>> >> >>> >> where b>a replace with value in b, so the new a should be : >>> >> >>> >> a=[1,1,3,2] >>> >> 2,1,2,2 >>> >> 1,1,2,2] >>> >> >>> >> and then keep looping through many arrays and replace whenever value >>> is >>> >> larger. >>> >> >>> >> I have tried numpy.putmask but that results in >>> >> TypeError: putmask() argument 1 must be numpy.ndarray, not list >>> >> Any other ideas? Thanks >>> >>> if I understand correctly it's a minimum.reduce >>> >>> numpy >>> >>> >>> a = np.concatenate((np.arange(5)[::-1], >>> np.arange(5)))*np.ones((4,3,1)) >>> >>> np.minimum.reduce(a, axis=2) >>> array([[ 0., 0., 0.], >>> [ 0., 0., 0.], >>> [ 0., 0., 0.], >>> [ 0., 0., 0.]]) >>> >>> a.T.shape >>> (10, 3, 4) >>> >>> python with iterable >>> >>> >>> reduce(np.maximum, a.T) >>> array([[ 4., 4., 4., 4.], >>> [ 4., 4., 4., 4.], >>> [ 4., 4., 4., 4.]]) >>> >>> reduce(np.minimum, a.T) >>> array([[ 0., 0., 0., 0.], >>> [ 0., 0., 0., 0.], >>> [ 0., 0., 0., 0.]]) >>> >>> Josef >>> >>> >> >>> >> _______________________________________________ >>> >> NumPy-Discussion mailing list >>> >> NumPy-Discussion@scipy.org >>> >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >>> >> >>> > >>> > >>> > _______________________________________________ >>> > NumPy-Discussion mailing list >>> > NumPy-Discussion@scipy.org >>> > http://mail.scipy.org/mailman/listinfo/numpy-discussion >>> > >>> _______________________________________________ >>> NumPy-Discussion mailing list >>> NumPy-Discussion@scipy.org >>> http://mail.scipy.org/mailman/listinfo/numpy-discussion >>> >> >> >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@scipy.org >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> >> > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion